📅  最后修改于: 2023-12-03 15:18:34.484000             🧑  作者: Mango
在PHP中,多维数组是指一个数组中含有另一个或多个数组,而这些数组中也可以含有其他的数组。多维数组可以让我们更方便地表示和操作复杂的数据结构。
定义多维数组可以使用下标或者关联数组的方式,例如:
//使用下标的方式定义多维数组
$students = array(
array("name"=>"John", "age"=>12, "grade"=>6),
array("name"=>"Jane", "age"=>11, "grade"=>5),
array("name"=>"Bob", "age"=>14, "grade"=>8)
);
//使用关联数组的方式定义多维数组
$car = array(
"make"=> "Toyota",
"model"=> "Camry",
"year"=> 2020,
"features"=> array(
"engine"=> "gasoline",
"transmission"=> "automatic"
)
);
访问多维数组中的元素可以使用下标或者关联数组的方式,例如:
echo $students[0]["name"]; //输出John
echo $car["features"]["engine"]; //输出gasoline
遍历多维数组可以使用for循环或foreach循环,例如:
//使用for循环遍历多维数组
for($i=0;$i<count($students);$i++){
echo $students[$i]["name"]." is in grade ".$students[$i]["grade"]."<br />";
}
//使用foreach循环遍历多维数组
foreach($car as $key=>$value){
if(is_array($value)){
echo $key.":<br />";
foreach($value as $k=>$v){
echo $k."=".$v."<br />";
}
}
else{
echo $key."=".$value."<br />";
}
}
PHP提供了许多用于操作多维数组的函数,例如:
array_push()
:向数组的末尾添加一个或多个元素array_pop()
:删除数组末尾的元素array_merge_recursive()
:递归合并二个或多个数组array_column()
:返回一个数组的指定列array_intersect_assoc()
:返回两个或多个数组的交集,比较键和值例如:
//使用array_push()函数向多维数组中添加一个元素
array_push($students, array("name"=>"Tom", "age"=>13, "grade"=>7));
//使用array_merge_recursive()函数合并多维数组
$a = array("name"=>"John", "age"=>12, "grade"=>6);
$b = array("name"=>"Jane", "age"=>11, "grade"=>5);
$c = array("name"=>"Bob", "age"=>14, "grade"=>8);
$students = array_merge_recursive($a, $b, $c);
//使用array_column()函数返回一个多维数组的指定列
$names = array_column($students, "name");
//使用array_intersect_assoc()函数返回两个多维数组的交集
$student1 = array(
array("name"=>"John", "age"=>12, "grade"=>6),
array("name"=>"Jane", "age"=>11, "grade"=>5),
array("name"=>"Bob", "age"=>14, "grade"=>8)
);
$student2 = array(
array("name"=>"John", "age"=>13, "grade"=>6),
array("name"=>"Jane", "age"=>11, "grade"=>5),
array("name"=>"Tom", "age"=>13, "grade"=>7)
);
$intersect = array_intersect_assoc($student1, $student2);
多维数组的使用可以让我们更方便地操作复杂的数据结构,也能更加高效地编写代码。