PHP经典实例(php cookbook)读书笔记 (0x04)
0x04数组
数组的创建
5种方式
- $fruits=array(‘Apples’,’Bananas’);
- $fruits=array.push(‘Apples’);
- fruits[0]=′Apples′; fruits[1]=’Bananas’);
- fruits[]=′Apples′; fruits[]=’Bananas’);
$fruits=[‘Apples’,’Bananas’];
其中 1方式可以在创建时候设置键值和设置起始下标
例如$fruits = array(5 => 'Apples', 'sec' => 'Bananas','Dates');
var_dump:
array (size=3)
5 => string ‘Apples’ (length=6)
‘sec’ => string ‘Bananas’ (length=7)
6 => string ‘Dates’ (length=5)
数组的初始化
range(low,high,step)
该函数创建一个数组,包含从 low 到 high (包含 low 和 high)之间的整数或字符。如果 high 比 low 小,则返回反序的数组。
参数 描述
low 必需。规定数组的最低值。
high 必需。规定数组的最高值。
step 可选。规定元素之间的步进制。默认是 1。
数组的迭代处理
foreach
foreach (array_expression as $key => $value) foreach (array_expression as $value)
array_map()
array_map() 函数将用户自定义函数作用到数组中的每个值上,并返回用户自定义函数作用后的带有新值的数组。 回调函数接受的参数数目应该和传递给 array_map() 函数的数组数目一致。 提示:您可以向函数输入一个或者多个数组。 语法 array_map(myfunction,array1,array2,array3...) 参数 描述 myfunction 必需。用户自定义函数的名称,或者是 null。 array1 必需。规定数组。 array2 可选。规定数组。 array3 可选。规定数组。
数组的删除
- unset(arg1,arg2 …..);
数组中某个值unset后,此键值不见了,但是依然可以用foreach遍历。
使用array_values($array);可以将数组压缩为稠密数组。 - array_splice(
array,
start,$length)
array_splice不会留出空位,数组会重现建立索引。 - 使用array_shift()去头,array_pop()去尾
两个函数都是对原数组操作,重新建立索引,返回的都是去掉的值
数组的扩充与合并
扩充并且初始化
array_pad(array,size,value)
array_pad() 函数将指定数量的带有指定值的元素插入到数组中
参数 描述
array 必需。规定数组。
size 必需。规定从函数返回的数组中元素的个数。
value 必需。规定从函数返回的数组中新元素的值。合并数组
1。array_merge(array1,array2,array3…)
array_merge() 函数把一个或多个数组合并为一个数组。
参数 描述
array1 必需。规定数组。
array2 可选。规定数组。
array3 可选。规定数组。2。array_merge_recursive()
该函数与 array_merge() 函数的区别在于处理两个或更多个数组元素有相同的键名时。array_merge_recursive() 不会进行键名覆盖,而是将多个相同键名的值递归组成一个数组。
字符串和数组的转换
string=join( separator, array); array = explode( separator, string,$limit);
数组查询
键存在查询
array_key_exists(key,array)
函数检查某个数组中是否存在指定的键名,如果键名存在则返回 true,如果键名不存在则返回 false。
参数 描述
key 必需。规定键名。
array 必需。规定数组。值存在查询
in_array(search,array,type)
函数搜索数组中是否存在指定的值。
参数 描述
search 必需。规定要在数组搜索的值。
array 必需。规定要搜索的数组。
type 可选。如果设置该参数为 true,则检查搜索的数据与数组的值的类型是否相同。值的相应键查询
array_search(value,array,strict)
函数在数组中搜索某个键值,并返回对应的键名。
参数 描述
value 必需。规定需要搜素的键值。
array 必需。规定被搜索的数组。
strict
可选。如果该参数被设置为 TRUE,则函数在数组中搜索数据类型和值都一致的元素。可能的值:
true
false - 默认
如果设置为 true,则在数组中检查给定值的类型,数字 5 和字符串 5 是不同的(参见实例 2)。
数组的最大最小值以及排序
max(),min()最大最小
只能返回最值但是找不到键名;排序
sort(),asort(),ksort(),natsort(),usort(),shuffle(),array_multisort();1。除了shuffle(),array_multisort()都是返回一个已经排序的数组
2。 sort()按字母进行升序排序,rsort()按字母进行降序排序。
asort()按键值进行升序排序,arsort()按键值进行降序排序。
ksort()按键名进行升序排序,krsort()按键名进行降序排序。这6个函数都有第二个参数
可选。规定如何排列数组的元素/项目。可能的值: 0 = SORT_REGULAR - 默认。把每一项按常规顺序排列(Standard ASCII,不改变类型) 1 = SORT_NUMERIC - 把每一项作为数字来处理 2 = SORT_STRING - 把每一项作为字符串来处理 3 = SORT_LOCALE_STRING - 把每一项作为字符串来处理,基于当前区域设置(可通过 setlocale() 进行更改) 4 = SORT_NATURAL - 把每一项作为字符串来处理,使用类似 natsort() 的自然排序 5 = SORT_FLAG_CASE - 可以结合(按位或)SORT_STRING 或 SORT_NATURAL 对字符串进行排序,不区分大小写
3。natsort() 函数用”自然排序”算法对数组进行排序。键值保留它们原始的键名。
在自然排序算法中,数字 2 小于 数字 10。在计算机排序算法中,10 小于 2,因为 “10” 中的第一个数字小于 2。4。usort() 通过用户自定义的比较函数对数组进行排序。
usort(array,myfunction);
参数 描述
array 必需。规定要进行排序的数组。
myfunction 可选。定义可调用比较函数的字符串。如果第一个参数小于等于或大于第二个参数,那么比较函数必须返回一个小于等于或大于 0 的整数。5。shuffle();随机排序;
6。array_multisort();多数组排序
数组去重,取交集,取并集,取差集
去重
array_unique() 函数移除数组中的重复的值,并返回结果数组。 当几个数组元素的值相等时,只保留第一个元素,其他的元素被删除。 返回的数组中键名不变。
并集
$union = array_unique(array_merge($a,$b));交集
$intersection = =array_intersect($a,$b);差集
$difference = array_diff($a,$b);对称差集
$difference = array_merge(array_diff($a,$b),array_diff($a,$b));