php多维数组foreach

php多维数组foreach,php,multidimensional-array,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循环中填充值:

foreach(......)
   {
   $array1[]=value1;
   $array2[]=value2;
   $array3[]=value3;
   }
然后必须对这些阵列进行回音:

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

有没有更优雅的方法来实现这一点,例如foreach循环和多维数组?

您可以将其作为一个对象?可能会创建一个实际的类,但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;
}

仍然不是很优雅,但没有丑陋的while loop。

你能把它做成一个物体吗?可能会创建一个实际的类,但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;
}
仍然不是很优雅,但没有丑陋的while循环。

假设您的阵列:

$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条件下放置计数, 因为每次迭代都会调用它!这是没有优化的

while($i < count($array1))
while($i
应该由

$count = count($array1);
while($i < $count)
$count=count($array1);
而($i<$count)
假设您的阵列:

$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条件下放置计数, 因为每次迭代都会调用它!这是没有优化的

while($i < count($array1))
while($i
应该由

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

您可以在任何数组上使用
foreach
并获取密钥:
foreach($key=>array1 as$key=>$value)
然后您已经拥有了第一个值和其他数组中值的密钥。但是我可能只使用一个数组来存储所有数据。请尝试
array\u map
array\u walk
array\u walk\u recursive
这些函数将帮助您实现这一点。您能完成foreach(…)吗?什么隐藏了点?您可以在任何数组上使用
foreach
,也可以获取密钥:
foreach($key=>array1 as$key=>$value)
,然后您已经拥有了第一个值和其他数组中值的密钥。但是我可能只使用一个数组来存储所有数据。请尝试
array\u map
array\u walk
array\u walk\u recursive
这些函数将帮助您实现这一点。您能完成foreach(…)吗?什么隐藏了这些点?您可以从
foreach
中拉出该对象,并将其实例使用到
foreach
中。您可以从
foreach
中拉出该对象,并将其实例使用到
foreach