使用 foreach 解析数组


parsing arrays using foreach

我有一个数组,形式为

$array = array(
    name => array (
        [0] => peter,
        [1] => george,
        [2] => sarah
    ),
    age => array(
        [0] =>1,
        [1] =>2,
        [2] =>3
    )
)

我想将其解析为一个表,但是当我使用 foreach 循环时,我似乎无法让它正确输出。

如果我使用

foreach($array[name] as $name){
    foreach($array[age] as $age{
        echo $name.$age;
    }
}

然后它只是输出每个年龄的名称,然后移动到下一个名称,然后执行所有 3 个年龄,然后是最终年龄。

我想要:

姓名1 年龄1姓名2 年龄2姓名3 年龄3

试试这个:

foreach($array['name'] as $iKey => $name){
echo $name.$array['age'][$iKey];
}
foreach (array_keys($array['name']) as $key) {
    echo $array['name'][$key] . $array['age'][$key];
}
基本上,从

其中一个"主"数组中获取子数组键,然后在循环中使用该键从两个子数组中提取所需的任何数据。

您可以在官方文档中找到有关array_keys更多详细信息。

$array = array(
    'name' => array(
    0 => 'peter',
    1 => 'george',
    2 => 'sarah'
    ),
    'age' => array(
    0 =>'1',
    1 =>'2',
    2 =>'3'
    )
);
foreach($array['name'] as $key => $value)
{
    echo 'Name: ' . $value . ' - Age: ' . $array['age'][$key].'<br />';
}

编辑:哦,太晚了:)

for ($i = 0; $i < count($array['name']); $i++) {    
   echo $array['name'][$i].$array['age'][$i];
}

这是您问题的代码:

<?php
$array = array(
"name" => array (
0 => "peter",
1 => "george",
2 => "sarah"
),
"age" => array(
0 =>1,
1 =>2,
2 =>3
)
);
$name = $array['name'];
$age = $array['age'];

for($i=0;$i<count($name);$i++)
{
 echo $name[$i].' '.$age[$i].' ';
}
?>

改用:

$i=0;
$len=count($array['name']);
while($i<$len){
   echo $array['name'][$i].$array['age'][$i];
   ++$i;
}

使用预计算,在循环之前而不是在循环中设置循环的最大值。

有关微优化技巧,请参阅以下文章 http://labs.phurix.net/posts/50-php-optimisation-tips-revisited