数组是一组数据的集合,php中的array实际上是一个有序映射。
映射是一种把values关联到keys的类型。
此类型针对多种不同用途进行了优化; 它可以被视为数组、列表(向量)、哈希表hash table(映射的实现)、字典、集合、堆栈、队列等等。
由于 array 的值可以是其它 array 所以树形结构和多维 array 也是允许的。

索引数组

数组的下标是由整数数字组成,默认从 0 开始,向后每次加 1。

1、定义一个空数组

$数组名 = array();

2、定义数组并赋值

$数组名 = array(值,值,值…….);

实例:

  1. <?php
  2. header("content-type:text/html;charset=utf-8");
  3. $arr = array("北京",100,"上海","天津");
  4. print_r($arr);

3、索引数组取值语法格式:

$数组名称[下标];
echo “数组中第1 个值:{{$arr[0]}
}”;
echo “数组中第3个值:{$arr[2]}
“;

4、将数组存值语法

存到指定位置//修改之前的值:$数组名【下标】 = 值;
向数组末尾追加值:$数组名【】 = 值;

5、获得数组长度语法格式:

count($数组名称);
$len = count($数组名称);

关联数组

更像是它语言中的字典,或对象,使用键值对的方式保存和操作数组中的元素。
关联数组:数组的下标是由字符串组成,当然,字符串可以包含数字。
在一个数组中,只要有一个值的下标不是数字,这个数组就是关联数组。

1、定义一个空数组:

$数组名 = array();

2、定义数组并赋值:

$数组名 = array( 下标=>值 , 下标=>值 , 下标=>值 … );

示例:

<?php
header("content-type:text/html;charset=utf-8");
//空数组
$arr1 = array();
echo gettype($arr1);
echo "<br>";
//索引数组
$arr2 = array(1,2,3,4)
var_dump($arr2);
echo "<br>";
//定义带元素的数组
$arr1 = array(
                             "Monday"=>"星期一",
                           "Tuseday"=>"星期二",
                           "Wednesday"=>"星期三",
                           "Thursday"=>"星期四",
               "Friday"=>"星期五",
               "Saturday"=>"星期六",
               "Sunday"=>"星期日
);
var_dump($arr1);
echo "<br>";

// 由于PHP是弱类型语言,数组中的元素可以是任意类型
   $arr2 = ["Monday"=>"星期一",
            "Tuesday"=>"星期二",
            "Wednesday"=>"星期三",
            "Thursday"=>"星期四",
            "Friday"=>"星期五",
            "Saturday"=>"星期六",
            "Sunday"=>"星期日"];
   var_dump($arr2);
   echo "<br>";

在 PHP 中,关联数组的操作与索引数组几乎完成相同,只不过数组的下标有所区别。

<?php
header("content-type:text/html;charset=utf-8");

$arr = array("userName"=>"张小明","sex"=>"男","age"=>10);

$arr["address"] = "北京";                //向数组中添加一个新值
$arr["age"] = 17;                                //修改数组中原有值
$len = count($arr);                            //获得数组长度

echo "姓名:{$arr["userName"]}<br/><br/>";
echo "数组长度为:{$len}<br/><br/>";
print_r($arr);

关联

<?php

   header("content-type:text/html;charset=utf-8");

   // 由于PHP是弱类型语言,数组中的元素可以是任意类型
   $arr2 = [];

   var_dump($arr2);
   echo "<br>";

   $arr2["one"] = 111;
   var_dump($arr2);
   echo "<br>";

   $arr2["two"] = 222;
   var_dump($arr2);
   echo "<br>";

   // 关联数组中允许使用混合key, 但是只能是int 或string
   // 如果不写key, 默认从 0 开始存放,如果前面有数字key,则接续保存
   $arr2[] = 333;
   var_dump($arr2);
   echo "<br>";

   $arr2[] = 444;
   var_dump($arr2);
   echo "<br>";
 ?>

数组

获取数组中元素个数

count(Countable|array $value, int $mode = COUNT_NORMAL): int
统计出数组里的所有元素的数量
echo count($arr1);
对数组进行取值时,不区分数组类型
数组名[索引/下标];

<?php

   header("content-type:text/html;charset=utf-8");
   $arr1 = array( "Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday");

   echo $arr1[0];
   echo "<br>";

   echo $arr1[5];
   echo "<br>";
   // 索引数组在访问下标越界时,会报错
   // echo $arr1[10];
   // echo "<br>";

   // 由于PHP是弱类型语言,数组中的元素可以是任意类型
   $arr2 = ["Monday"=>"星期一",
      "Tuesday"=>"星期二",
      "Wednesday"=>"星期三",
      "Thursday"=>"星期四",
      "Friday"=>"星期五",
      "Saturday"=>"星期六",
      "Sunday"=>"星期日"];

   echo $arr2["Monday"];
   echo "<br>";

   echo $arr2["Saturday"];
   echo "<br>";

   // 关联数组在使用一个未定义的key取值时会报错
   // echo $arr2["xxx"];
   // echo "<br>";
?>

获取数组中的元素

<?php

   header("content-type:text/html;charset=utf-8");
   $arr1 = array( "Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday");

   echo $arr1[0];
   echo "<br>";

   echo $arr1[5];
   echo "<br>";
   // 索引数组在访问下标越界时,会报错
   // echo $arr1[10];
   // echo "<br>";

   // 由于PHP是弱类型语言,数组中的元素可以是任意类型
   $arr2 = ["Monday"=>"星期一",
      "Tuesday"=>"星期二",
      "Wednesday"=>"星期三",
      "Thursday"=>"星期四",
      "Friday"=>"星期五",
      "Saturday"=>"星期六",
      "Sunday"=>"星期日"];

   echo $arr2["Monday"];
   echo "<br>";

   echo $arr2["Saturday"];
   echo "<br>";

   // 关联数组在使用一个未定义的key取值时会报错
   // echo $arr2["xxx"];
   // echo "<br>";
?>

修改数组中的元素值

修改数据和添加数组类似,如果指定 的索引或 key 不存在,就是添加, 存在就是修改.

<?php

   header("content-type:text/html;charset=utf-8");
   $arr1 = array( "Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday");

   var_dump($arr1);
   echo "<br>";

   $arr1[0] = "星期一";
   var_dump($arr1);
   echo "<br>";

   $arr1[0] = "周一";
   var_dump($arr1);
   echo "<br>";


   $arr2 = ["Monday"=>"星期一",
      "Tuesday"=>"星期二",
      "Wednesday"=>"星期三",
      "Thursday"=>"星期四",
      "Friday"=>"星期五",
      "Saturday"=>"星期六",
      "Sunday"=>"星期日"];

      var_dump($arr2);
      echo "<br>";

      $arr2["Monday"] = "星期一";
      var_dump($arr2);
      echo "<br>";

      $arr2["Monday"] = "周一";
      var_dump($arr2);
      echo "<br>";
?>

删除数组/数组中的元素

在php中, 可以使用 unset() 函数来删除数组或数组中元素的值.

<?php

   header("content-type:text/html;charset=utf-8");
   $arr1 = array( "Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday");

   var_dump($arr1);
   echo "<br>";

   unset($arr1[0]);
   var_dump($arr1);
   echo "<br>";

      // 删除之后再使用会报错
   unset($arr1);
   var_dump($arr1);
   echo "<br>";


   $arr2 = ["Monday"=>"星期一",
      "Tuesday"=>"星期二",
      "Wednesday"=>"星期三",
      "Thursday"=>"星期四",
      "Friday"=>"星期五",
      "Saturday"=>"星期六",
      "Sunday"=>"星期日"];

      var_dump($arr2);
      echo "<br>";

      unset($arr2["Monday"]);
      var_dump($arr2);
      echo "<br>";

      // 删除之后再使用会报错
      unset($arr2);
      var_dump($arr2);
      echo "<br>";
?>

遍历数组

foreach 语法结构提供了遍历数组的简单方式。

foreach (iterable_expression as $value)
      statement
 foreach (iterable_expression as $key => $value)  
       statement

第一种格式遍历给定的 iterable_expression 迭代器。每次循环中,当前单元的值被赋给 $value。
第二种格式做同样的事,只除了当前单元的键名也会在每次循环中被赋给变量 $key。

<?php

   header("content-type:text/html;charset=utf-8");
   $arr1 = array( "Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday");

   // 不带下标遍历
   foreach ($arr1 as  $val) {
      echo "值:" . $val . "<br>";
   }
   // 带下标遍历
   foreach ($arr1 as $i => $val) {
      echo "下标:" . $i . "-> 值:" . $val . "<br>";
   }

   echo "<hr>";

   $arr2 = ["Monday"=>"星期一",
      "Tuesday"=>"星期二",
      "Wednesday"=>"星期三",
      "Thursday"=>"星期四",
      "Friday"=>"星期五",
      "Saturday"=>"星期六",
      "Sunday"=>"星期日"];

    // 不带下标遍历
    foreach ($arr2 as  $val) {
      echo "值:" . $val . "<br>";
   }
   // 带下标遍历
   foreach ($arr2 as $key => $val) {
      echo "key:" . $key . "-> value:" . $val . "<br>";
   }

?>

多维数组

在 PHP 中,一个数组中的值可以是另一个数组,另一个数组中的值也可以是一个数组,也就是说数组可以嵌套。

一维数组:没有发生嵌套的普通数组。

二维数组:两层数组的嵌套。

定义二维数组;

$arr = array(
array(“id”=>1,”userName”=>”张三”,”sex”=>”男”,”age”=>15),
array(“id”=>2,”userName”=>”李四”,”sex”=>”女”,”age”=>14),
array(“id”=>3,”userName”=>”王五”,”sex”=>”女”,”age”=>16),
array(“id”=>4,”userName”=>”赵六”,”sex”=>”男”,”age”=>15),
array(“id”=>5,”userName”=>”田七”,”sex”=>”女”,”age”=>16)
);
$arr 数组中的每个值都是一个数组,也就是两层数组的嵌套,所以 $arr 是一个二维数组。

二维数组取值

echo “第5名学生的姓名为:{$arr[4][“userName”]}

“;
$arr[4]:代表 $arr 数组中的第 5 个值,也就是 4 下标对应的关联数组。
$arr[4][“userName”]:代表 $arr 数组中 4 下标对应的关联数组中的 “userName” 下标对应的值。

三维数组:三层数组的嵌套。

多维数组:多层数组的嵌套。