📜  PHP的多维数组(1)

📅  最后修改于: 2023-12-03 15:18:34.484000             🧑  作者: Mango

PHP的多维数组

在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);

多维数组的使用可以让我们更方便地操作复杂的数据结构,也能更加高效地编写代码。