我有一个数组,形式为
$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