淘先锋技术网

首页 1 2 3 4 5 6 7
PHP中的foreach语句是遍历数组的一个重要工具。当遇到多维数组时,使用foreach语句需要更多的注意和技巧。本文就将着重介绍php foreach多维数组的遍历方法。 对于以下多维数组:
$animal = array(
"dog" =>array(
"name" =>"Rusty",
"age" =>3
),
"cat" =>array(
"name" =>"Milo",
"age" =>2
),
"fish" =>array(
"name" =>"Nemo",
"age" =>1
)
);
我们可以使用foreach语句对其进行遍历:
foreach($animal as $key=>$subarray){ 
echo "$key:\n"; 
foreach($subarray as $subkey=>$value){ 
echo "$subkey=$value\n"; 
} 
echo "\n"; 
}
以上的代码将输出:
dog:
name=Rusty
age=3
cat:
name=Milo
age=2
fish:
name=Nemo
age=1
首先我们定义了一个外部迭代器$animal,它将遍历每个子数组。 对于每个子数组,我们需要进一步进行遍历。我们定义了另一个内部迭代器$subarray,并且将其作为foreach语句的第二个参数。 在内部foreach语句中,我们遍历了每个子数组的元素,定义了$key作为键名,$value作为键值。 如果我们现在需要删除数组animal中年龄为2岁的宠物,我们可以在内部foreach语句中添加if语句:
foreach($animal as $key=>$subarray){ 
echo "$key:\n"; 
foreach($subarray as $subkey=>$value){ 
if($subkey == "age" && $value==2){
unset($animal[$key]);
continue 2;
}
echo "$subkey=$value\n"; 
} 
echo "\n"; 
}
在内部foreach语句中,我们首先检查当前遍历到的元素是否为年龄($subkey == "age" && $value==2)。 如果是,我们使用unset语句删除整个子数组(unset($animal[$key]))。然后使用continue语句跳过当前循环,继续下一个循环。 如果我们现在需要对数组中的宠物进行排序,按照宠物的姓名进行升序排序,我们可以:
$names_array = array();
foreach ($animal as $key =>$subarray) {
$names_array[$key] = $subarray['name'];
}
// 按照键名(宠物名姓名)排序
array_multisort($names_array, SORT_ASC, $animal);
// 遍历排序好的数组
foreach($animal as $key=>$subarray){ 
echo "$key:\n"; 
foreach($subarray as $subkey=>$value){ 
echo "$subkey=$value\n"; 
} 
echo "\n"; 
}
我们首先使用foreach语句遍历数组,将每个宠物的名字存入一个 names_array 数组,键名为宠物名字,键值为宠物的名字。然后,我们使用array_multisort 函数对 names_array 进行排序,并将排序好的结果直接应用到原数组 animal 中。最后,我们再次遍历排好序的数组并将其打印出来。