PHP经典实例读书笔记 (数组)

本文详细介绍了PHP中数组的各种操作方法,包括数组的创建、初始化、迭代处理、删除、扩充与合并,以及字符串与数组间的转换等。同时,还探讨了数组查询、排序及集合运算等内容。

PHP经典实例(php cookbook)读书笔记 (0x04)

0x04数组


数组的创建

5种方式

  1. $fruits=array(‘Apples’,’Bananas’);
  2. $fruits=array.push(‘Apples’);
  3. fruits[0]=Apples; fruits[1]=’Bananas’);
  4. fruits[]=Apples; fruits[]=’Bananas’);
  5. $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。


数组的迭代处理

  1. foreach

                foreach (array_expression as $key => $value)
                foreach (array_expression as $value)
    
  2. array_map()

    array_map() 函数将用户自定义函数作用到数组中的每个值上,并返回用户自定义函数作用后的带有新值的数组。
    回调函数接受的参数数目应该和传递给 array_map() 函数的数组数目一致。
    提示:您可以向函数输入一个或者多个数组。
    语法
    array_map(myfunction,array1,array2,array3...)
    参数  描述
    myfunction  必需。用户自定义函数的名称,或者是 null。
    array1  必需。规定数组。
    array2  可选。规定数组。
    array3  可选。规定数组。
    

数组的删除

  1. unset(arg1,arg2 …..);
    数组中某个值unset后,此键值不见了,但是依然可以用foreach遍历。
    使用array_values($array);可以将数组压缩为稠密数组。
  2. array_splice( array, start,$length)
    array_splice不会留出空位,数组会重现建立索引。
  3. 使用array_shift()去头,array_pop()去尾
    两个函数都是对原数组操作,重新建立索引,返回的都是去掉的值

数组的扩充与合并

  1. 扩充并且初始化
    array_pad(array,size,value)
    array_pad() 函数将指定数量的带有指定值的元素插入到数组中
    参数 描述
    array 必需。规定数组。
    size 必需。规定从函数返回的数组中元素的个数。
    value 必需。规定从函数返回的数组中新元素的值。

  2. 合并数组

    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);


数组查询

  1. 键存在查询

    array_key_exists(key,array)
    函数检查某个数组中是否存在指定的键名,如果键名存在则返回 true,如果键名不存在则返回 false。
    参数 描述
    key 必需。规定键名。
    array 必需。规定数组。

  2. 值存在查询

    in_array(search,array,type)
    函数搜索数组中是否存在指定的值。
    参数 描述
    search 必需。规定要在数组搜索的值。
    array 必需。规定要搜索的数组。
    type 可选。如果设置该参数为 true,则检查搜索的数据与数组的值的类型是否相同。

  3. 值的相应键查询

    array_search(value,array,strict)
    函数在数组中搜索某个键值,并返回对应的键名。
    参数 描述
    value 必需。规定需要搜素的键值。
    array 必需。规定被搜索的数组。
    strict
    可选。如果该参数被设置为 TRUE,则函数在数组中搜索数据类型和值都一致的元素。可能的值:
    true
    false - 默认
    如果设置为 true,则在数组中检查给定值的类型,数字 5 和字符串 5 是不同的(参见实例 2)。


数组的最大最小值以及排序

  1. max(),min()最大最小
    只能返回最值但是找不到键名;

  2. 排序
    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();多数组排序


数组去重,取交集,取并集,取差集

  1. 去重

     array_unique() 函数移除数组中的重复的值,并返回结果数组。 
        当几个数组元素的值相等时,只保留第一个元素,其他的元素被删除。 
        返回的数组中键名不变。
    
  2. 并集
    $union = array_unique(array_merge($a,$b));

  3. 交集
    $intersection = =array_intersect($a,$b);

  4. 差集
    $difference = array_diff($a,$b);

  5. 对称差集
    $difference = array_merge(array_diff($a,$b),array_diff($a,$b));


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值