我正在尝试将多维数组传递给foreach语句,当我这样做时,我将数组转换为变量,丢失了结构,因此无法正确访问它。
例如 -
$unFilteredInfo = array();
$sql - ...
// execute sql
$i = 0;
while ($rows = CDB::GetAssoc($lrs))
{
$unFilteredInfo["LINE1"][$i] = $rows["LINE1"];
$unFilteredInfo["LINE2"][$i] = $rows["LINE2"];
$unFilteredInfo["LINE3"][$i] = $rows["LINE3"];
$i++;
}
// Array filled.
$arrayCount = count($unFilteredInfo); // 2547
$ii = 0;
foreach ($unFilteredInfo as $info)
{
$line1Info= $info["LINE1"]; // null..
$line2Info= $info["LINE2"]; // null..
$line3Info= $info["LINE3"]; // null..
$line1Info= $info["LINE1"][$ii]; // null..
$line2Info= $info["LINE2"][$ii]; // null..
$line3Info= $info["LINE3"][$ii]; // null..
$ii++;
}
此外,在$ info上运行varDump时会打印 -
array (size=2547)
0 => string 'APPO' (length=4)
1 => string 'APPX' (length=4)
2 => string 'APPO' (length=4)
3 => string 'APPX' (length=4)
4 => string 'APPI' (length=4)
5 => string 'APPO' (length=4)
..................................
出于某种原因,当我访问foreach语句中的$ info变量时,它会导致null。我甚至尝试使用字符串键和int访问$ info行数据,仍然返回null。
有什么想法吗?
答案 0 :(得分:2)
您误解了自己的数组结构。它看起来像这样:
[
LINE1 => [.., .., ..],
LINE2 => [.., .., ..],
LINE3 => [.., .., ..]
]
当您使用foreach
循环播放时,$info
将为[.., .., ..]
。
老实说,阵列结构也相当疯狂。简化它:
$unFilteredInfo = array();
while ($row = CDB::GetAssoc($lrs)) {
$unFilteredInfo[] = $row;
}
然后:
foreach ($unFilteredInfo as $info) {
echo $info['LINE1'];
...
}
或者只是在第一个循环中开始echo
。