一、PHP数组基础部分

PHP数组的分类


按照下标的不同,PHP数组分为关联数组和索引数组;
索引数组:下标从0开始,依次增长
关联数组:下标为字符串格式,每个下标字符串与数组的值一一关联对应(类似对象的键值对)

代码演示:


$arr1 = array(1,2,3,4,5,6,7);//索引数组 var_dump($arr1); $arr2 = array("one"=>1,"two"=>2,"three"=>3);//关联数组 var_dump($arr2); $arr3 = array(1,"one"=>2,3,5=>4,5,6,"10.0"=>7,"08"=>8,"08"=>10,"hahah"=>9); var_dump($arr3);关于关联数组和索引数组


1、数组中,可以同时存在索引数组与关联数组。
array(1,2,3,"one"=>4);

2、数组中,所有的索引数组,如果不加指定,会去掉关联项,默认增长(即,关联数组不占索引位);
array(1,2,"one"=>3,4,5);//1,2,4,5的索引--->0/1/2/3

3、如果,关联数组的key,是纯十进制整数字符串,
则会将此数字转为索引数组的索引值;("10.0"/"08"等格式,仍然是关联数组,不转为索引)
array(1,2,"one"=>3,"9"=>4,"010"=>5);//1,2,4的索引--->0/1/9

4、如果,手动指定关联数组的key,索引数组的下标,如果与前面已有的key或下标重复,则后制定的值会覆盖之前的值;
array(1,"one"=>2,0=>5,"one"=>6);--->打印数组,0=>5,"one"=>6

5、如果手动指定索引数组下标,则后续自增长下标,会按照之前下标最大值,依次增长。
array(1,2,7=>3,4);--->1,2,3,4的下标--->0/1/7/8

数组的声明方式


1、直接赋值声明
$arr[] = 1;
$arr[] = 1;
$arr[] = 1;
$arr[] = 1;
$arr[] = 1;
var_dump($arr);

2、[]字面量声明(PHP5.4版本之后能用)
$arr = [1,2,3,4,"one"=>5,6];
var_dump($arr);

3、Array()声明 没有new关键字
$arr = array(1,2,3,4,5);
var_dump($arr);

数组元素的读取


PHP中,数组支持[]和{}读取下标。

多维数组

①数组的一个值,依然是一个数组,我们称这种数组为多维数组;
②多维数组,不要求所有的项都是数组,可以是数组与普通值的混合;
③多维数组,也不要求每个子数组的个数限制,可以是任意的长度。

使用多维数组,一定要注意,数组中分隔用逗号!
原则上,多维数组一般不超过3层使用!

三维数组代码演示如下:


$H51701 = array( "group1"=>array( array("name"=>"张三","age"=>14,"sex"=>"男"), array("name"=>"李四","age"=>15,"sex"=>"男"), array("name"=>"王二","age"=>13,"sex"=>"男") ), "group2"=>array( array("name"=>"张三","age"=>15,"sex"=>"男"), array("name"=>"李四","age"=>15,"sex"=>"男"), array("name"=>"王二","age"=>14,"sex"=>"男") ), "group3"=>array( array("name"=>"张三","age"=>14,"sex"=>"男"), array("name"=>"李四","age"=>18,"sex"=>"男"), array("name"=>"王二","age"=>24,"sex"=>"男") ), ); var_dump($H51701);

二、数组遍历

1、使用for循环遍历数组
count($arr);用于统计数组元素的个数

for循环只能用于遍历,纯索引数组!
如果存在关联数组,count统计时会统计两种数组的总个数,使用for循环遍历混合数组,导致数组越界!

代码如下:


$arr = array(1,2,3,"one"=>4,5,6,7); $num = count($arr); echo"数组元素的个数{$num}<br/>"; for($i=0;$i<$num;$i++){ echo "{$i}==>{$arr[$i]}<br/>"; }

2、forEach循环遍历数组
foreach可以遍历任何类型的数组!

代码如下:


$arr = array(1,2,3,"one"=>4,5,6,7); foreach($arr as $key=>$item){ echo "{$key}==>{$item}<br/>"; }

下面我们来做一个数组遍历的小练习~看代码~


$arr = array( "group1"=>array( array("name"=>"张三","age"=>14,"sex"=>"男"), array("name"=>"李四","age"=>12,"sex"=>"男"), array("name"=>"王二","age"=>18,"sex"=>"男") ), "group2"=>array( array("name"=>"张三","age"=>14,"sex"=>"男"), array("name"=>"李四","age"=>16,"sex"=>"男"), array("name"=>"王二","age"=>19,"sex"=>"男") ), "group3"=>array( array("name"=>"张三","age"=>14,"sex"=>"男"), array("name"=>"李四","age"=>12,"sex"=>"男"), array("name"=>"王二","age"=>13,"sex"=>"男") ), ); foreach($arr as $key=>$value){ echo "{$key}<br/>"; foreach($value as $key1=>$value1){ echo "第".($key1+1)."个同学<br/>"; foreach($value1 as $key2=>$value2){ echo "{$key2}==>{$value2}<br/>"; } echo"<br/>"; } echo"----------------------<br/>"; }