要了解php数组,kano个人技术博客建议要先看一下官方手册上对于数组的定义,在图中可以看到php的数组非常灵活,可以将其当做各种结构;而且数组中还可以存储任意类型的数据,在php中,数组和字符串的操作占据工作的很大一部分,所以掌握相关技能是各位php程序员必须要学习的php教程。
php数组的索引也可以称作php数组下标,也可以称为键名,根据php数组提供下标的不同方式,可以将数组分为索引数组和关联数组两种(也可以同时使用数字和字符串索引,但一般不这样用,会显得有些混乱),索引数组是有序集合,关联数组是键值对的无序集合。
在php中创建数组时不需要声明数组的长度。
一、php定义数组
定义数组的方式有两种:
1. 直接为数组元素赋值
(1) 创建索引数组
$a[0] = 'aa'; $a[1] = 'bb'; $a[2] = 'cc'; $a[3] = 'dd';
甚至可以不按数字的顺序给数组赋值
$a[7] = 'ffff'; $a[4] = 'fa'; var_dump($a); var_dump(count($a));
php返回数组结果:
不按顺序来也不会报错,充分证明了php的灵活性……不过这样确实乱来了点儿,正常情况不会这么用的。
(2) 创建关联数组
$a['aa'] = 'wawa'; $a['bb'] = 'kaka'; $a['cc'] = 'mama';
(3) 不指定索引
$a[] = 'aaa'; $a[] = 'bbb'; $a[] = 'ccc'; $a[] = 'ddd';
不指定索引,当数组为空数组或者数组类型中没有数字索引的时候,新元素索引为0;否则为数组中最大的数字索引+1。
2. 使用array()语法结构php数组函数添加数组
(1) 创建索引数组
$arr = array( 0 => 'aa', 1 => 'bb', 2 => 'cc' );
索引数组可以不指定键名
$arr = array('aa', 'bb', 'cc');
(2) 创建关联数组
$arr = array( 'key1' => 'aa', 'key2' => 'bb', 'key3' => 'cc', );
(3) 创建数组的简单办法
php5.4以上的版本可以使用更为简便的语法来创建数组
$arr1 = ['aa', 'bb', 'cc']; $arr2 = [ 'a' => 'aaa', 'b' => 'bbb' ];
创建php多维数组:
和创建php一维数组基本没什么区别,只不过数组元素也是数组
$personList = array( array(1, '张三', 'A公司', '12345678'), array(2, '李四', 'B公司', '87654321') );
二维关联数组
$personList = array( 'person1' => array(1, '张三', 'A公司', '12345678'), 'person2' => array(2, '李四', 'B公司', '87654321') );
二、数组常用操作
1. php数组遍历
在php中遍历数组建议使用foreach
foreach($arr as $key => $value){ // loop body }
其中key是键名,value是值
如果是关联数组也可以用普通的for函数来进行数组循环,但php推荐使用foreach进行遍历,性能会更高一些,没有特殊需要就不要用for循环了。
2. 数组合并
可以使用 + 或array_merge函数来合并多个数组,在合并关联数组和索引数组时表现有所区别:
(1) 关联数组
当要合并的数组的键名没有同名时,二者的效果是一样的:
$arr1 = ['a' => 'aa', 'b' => 'bb']; $arr2 = ['c' => 'cc', 'd' => 'dd']; $arr3 = ['e' => 'ee', 'f' => 'ff']; var_dump($arr1 + $arr2 + $arr3); var_dump(array_merge($arr1, $arr2, $arr3));
有相同键名的情况下,array_merge会用同名键的最后一个键值;而 + 会使用第一个键值
$arr1 = ['a' => 'aa', 'b' => 'bb']; $arr2 = ['b' => 'cc', 'd' => 'dd']; $arr3 = ['b' => 'ee', 'f' => 'ff']; var_dump($arr1 + $arr2 + $arr3); var_dump(array_merge($arr1, $arr2, $arr3));
(2) 索引数组
没有相同键名的情况系仍然是没有区别(但索引数组一般都会从0开始,这种情况几乎见不到),有相同键名时,+ 还是会使用第一个键值;而array_merge不会覆盖原来的值,而是会附加到后面
$a = [55, 77]; $b = [77, 22, 33]; var_dump($a + $b); var_dump(array_merge($a, $b));
3. php删除数组元素
unset可以用来删除数组元素
$arr = [ 'a' => 'aaa', 'b' => 'bbb', 'c' => 'ccc' ]; unset($arr['b']); var_dump($arr);
索引数组用array_splice删除元素效果更好,数字的键名会重新索引(通常这是我们想要的):
$arr1 = ['a', 'b', 'c', 'd']; unset($arr1[1]); var_dump($arr1); // 索引将有空缺 $arr2 = ['a', 'b', 'c', 'd']; array_splice($arr2, 1, 1); var_dump($arr2); // 索引连续
本篇kano个人博客关于php数组新手入门教程的解析就说到这里了,数组这个话题相当之大,kano这里讲的只是九牛一毛,在实战过程中还有很多很多处理php数组的函数可以拿出来讲,类似php数组的排序、三维数组、php数组与字符串之间的转换、数组分割、php数组去重、数组截取等等知识点都是非常常见常用的。