Php将值推送到二维数组

时间:2012-02-05 22:00:38

标签: php arrays foreach push

我有一个二维数组,我想用一个像

这样的while循环将值推送到它
   $arr[0][1] = 1. value
   $arr[0][2] = 2. value

我试过了

   while($zRow = mysql_fetch_array($zQuery))
    {
     $props[]['name'] =$zRow['name'];
     $props[]['photo'] =$zRow['thumbnail'];
    }

这个循环将名称推送到$ props [0] [name]和缩略图到$ props [1] [photo]

我也试过

   $j = 0;
   while($zRow = mysql_fetch_array($zQuery))
    {
     $props[$j]['name'] =$zRow['name'];
     $props[$j]['photo'] =$zRow['thumbnail'];
     $j+=1;     
    }

虽然有效,但是当我以后使用foreach循环时,它会像“非法偏移类型”那样出现问题

这是我的foreach循环

    foreach($props as $no)
    {
      echo $props[$no]['name'];
    } 

现在我的问题; 1)除了while循环之外还有其他方法,对于二维数组,使用$ j变量,如array_push 2)我如何使用foreach循环进行二维数组

2 个答案:

答案 0 :(得分:13)

您可以将第一个循环更改为以下内容:

while($zRow = mysql_fetch_array($zQuery))
{
    $row = array();
    $row['name'] = $zRow['name'];
    $row['photo'] = $zRow['thumbnail'];
    $props[] = $row;
}

您的方法也有效,但您需要额外的变量。

在你的第二个循环中,你真正需要做的是:

foreach($props as $index => $array)
{
    echo $props[$index]['name'];
    // OR
    echo $array['name'];
}

答案 1 :(得分:4)

将任何内容推送到具有$myArray[] = 'foo'的数组将增加数组的计数器。

对于多维数组,您需要填充“内部”数组,然后将其推送到“外部”(在您的$props}数组中)。

while($zRow = mysql_fetch_array($zQuery)) {
    $data = array('name' => $zRow['name'], 'photo' => $zRow['thumbnail']);
    $props[] = $data;
}

迭代深度已知的多维数组:

foreach ($props as $prop) {
    foreach ($prop as $key => $value) {
        echo "{$key} => {$value}" . PHP_EOL;
    }
}

如果嵌套的深度未知,则可能必须使用递归函数来收集数据。