无法将多维数组传递给foreach函数 - PHP

时间:2016-02-16 08:46:48

标签: php arrays foreach

我正在尝试将多维数组传递给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。

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

您误解了自己的数组结构。它看起来像这样:

[
    LINE1 => [.., .., ..],
    LINE2 => [.., .., ..],
    LINE3 => [.., .., ..]
]

当您使用foreach循环播放时,$info将为[.., .., ..]

老实说,阵列结构也相当疯狂。简化它:

$unFilteredInfo = array();
while ($row = CDB::GetAssoc($lrs)) {
    $unFilteredInfo[] = $row;
}

然后:

foreach ($unFilteredInfo as $info) {
    echo $info['LINE1'];
    ...
}

或者只是在第一个循环中开始echo