LZ之前一直学习Java,最近刚转php,将学习的笔记记录下来。
1.定义
个人首先觉得,php中的数组与Java相比,有个区别很大的地方就是定义。
数组大小:想想,我们在Java要定义一个数组,首先要知道:数组的基本类型、数组的大小。如果定义一个长度为3的int数组:
int[] intValue = new int[3];
定义之后,我们在向其赋值或者在定义时候直接赋值。
int[] intVlaue = {1,2,3};
但是无论如何,我们可以看到,在Java中,如果要用一个数组,必须一开始就确定它的大小。(印象中c、c++利用指针并不需要)。
但是,在php中,则并不需要。需要的时候直接定义,自动追加到数组。(在这个性质上来说,有点像java里面的list)
$array_test[0] = 1;
$array_test[1] = 2;
$array_test[2] = 3;
$array_test[3] = 4;
数组下标:
无论是c++还是java。数组的下标只能是数字,从0开始,到数组的长度-1;然而,在php中下标也可以使字符串。
$person = array(
'name' => 'michael',
'school' => 'pt',
'age' => 15,
'sex' => 'boy'
);
$person['weight']= '60kg';
php的这种性质,类似于Java中的map,但是又会有区别。下面举个例子:
$contact = array(
1,
14 => 'mr mm',
'company A',
'Beijing',
14 => '110',
'114@qq.com'
);
他输出的结果:
array(5) { [0]=> int(1) [14]=> string(3) "110" [15]=> string(9) "company A" [16]=> string(7) "Beijing" [17]=> string(10) "114@qq.com" }
我们看到输出的结果:由于下标14被申明过,所以后面的下标会根据当前的索引的最大值递增。Java中的map没有这个功
2.使用
回忆Java中对于数组(或者map)最常见的操作:遍历、获取map的Valus、key、长度、
遍历:
php中比较常见的遍历方式有两种,一种是用for,另一中是foreach。
其中for的用法,基本上和Java类似。foreach有些区别。
php中foreach:
foreach( array_expression as $param)
统计:
php中使用count()函数
获取vlaus
array_values
获取keys
array_keys()
拆分
array_slice()
合并
array_merge()
上面是我进场会用到的函数。但是还有几个函数,自己觉得功能不错,记下来、
排序:sort()
判断数组中是否存在某个值:in_array()
两个比较特殊的函数:array_filter()和array_walk();
array_filter(array input,callbck()):通过回调函数去过滤array数组中的元素。
array_walk(array_input,callback funname):对每个元素应用回调函数进行处理
3.删除数组元素:
unset()