php多维数组foreach

时间:2015-12-24 09:04:05

标签: php multidimensional-array

我使用三个相同长度的不同数组,它们在foreach循环中填充了值:

foreach(......)
   {
   $array1[]=value1;
   $array2[]=value2;
   $array3[]=value3;
   }

然后必须回应这些数组:

$i = 0;
while($i < count($array1))
   {
   echo $array1[i];
   echo $array2[i];
   echo $array3[i];
   $i++;
   }

有没有更优雅的方法,例如foreach循环和多维数组?

2 个答案:

答案 0 :(得分:0)

你可以做一个对象吗?可能会创建一个实际的类,但StdClass可以工作。

foreach(...)
{
    $obj = new StdClass();
    $obj->value1 = $value1;
    $obj->value2 = $value2;
    $obj->value3 = $value3;
    $array[] = $obj;
}

foreach($array as $obj)
{
    echo $obj->value1;
    echo $obj->value2;
    echo $obj->value3;
}

仍然不是很优雅,但在循环时没有丑陋。

答案 1 :(得分:0)

假设您的阵列:

$a1 = [2,3,4];
$a2 = [6,7,8];
$a3 = [9,10,11];


array_walk($a1, function($v, $k) use($a2, $a3)
{
    echo $v;
    echo $a2[$k];
    echo $a3[$k];
});

或者只是

foreach($a1 as $k => $v)
{
    echo $v;
    echo $a2[$k];
    echo $a3[$k];
}

注意:

在条件允许的情况下,你永远不应该计算, 因为它会调用每次迭代!那是没有优化的

while($i < count($array1))

应替换为

$count = count($array1);
while($i < $count)