PHP与JAVA在数组使用上的区别
1、定义时数据大小
(1)JAVA:需要先知道数组的基本类型、数组的大小。如:定义长度为3的int数组int[] intValue = new int[3],定义之后,我们在向其赋值或者在定义时候直接赋值。如:int[] intVlaue = {1,2,3};
注:我们可以看到,在Java中,如果要用一个数组,必须一开始就确定它的大小。(印象中c、c++利用指针并不需要)。
(2)在php中需要的时候直接定义,自动追加到数组。(在这个性质上来说,有点像java里面的list)
$array_test[0] = 1;
$array_test[1] = 2;
$array_test[2] = 3;
$array_test[3] = 4;
2、数组下标
(1)JAVA无论是c++还是java。数组的下标只能是数字,从0开始,到数组的长度-1;
(2)在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没有这个功
3、使用时候的不同
(1)Java中对于数组(或者map)最常见的操作:遍历、获取map的Valus、key、长度、
(2)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):对每个元素应用回调函数进行处理