(四)php参考手册---php数组

来源:互联网 发布:hr抢购软件 编辑:程序博客网 时间:2024/06/11 06:00

打印数组

  • 用print_r();

创建数组

  • array();
  • range() 包含指定数组(包含键key和值value)
$number=range(1,10);print_r($number);$letters=range('a','z');print_r($letters);echo $letters[15];

遍历数组

  • for循环
for($i=0;$i<count($userNames);$i++){    echo ($i+1).'----'.$userNames[$i];    echo '<br />';}
  • foreach:如果key不是从0开始,或者key不是数字时就不能使用for循环了,可以选择foreach循环遍历数组。
if(is_array($userName)){    foreach($userNames as $key=> $value){        echo $key.'----'.$value.'<be />';    }}else{    echo $userNames;}
  • each:函数生成一个由数组当前内部指针所指向的元素的键名和键值组成的数组,并把内部指针向前移动。
    返回的数组中包括的四个元素:键名为 0,1,key 和 value。单元 0 和 key 包含有数组单元的键名,1 和 value 包含有数据。
    如果内部指针越过了数组范围,本函数将返回 FALSE。
$a=each($userNames);echo $a['value'];  //第一个值$a=each($userNames);echo $a['value'];  //第二个值
  • list:把数组中的值赋给一些变量
    注意:list只认识下标是数字的数组
    自定义key是不能识别的
$a=array('aaa','bbb','ccc','ddd');list($var1,$var2)=$a;//相当于$var1='aaa';$var2='bbb';echo $var2;
  • array_map() 函数将用户自定义函数作用到数组中的每个值上,并返回用户自定义函数作用后的带有新值的数组。
    回调函数接受的参数数目应该和传递给 array_map() 函数的数组数目一致。
    提示:您可以向函数输入一个或者多个数组。

  • array_walk() 函数对数组中的每个元素应用用户自定义函数。在函数中,数组的键名和键值是参数。
    语法:array_walk(array,myfunction,userdata…)
    参数:userdata,… 可选。规定用户自定义函数的参数。您能够向此函数传递任意多参数。

  • array_walk_recursive() 函数对数组中的每个元素应用用户自定义函数。在函数中,数组的键名和键值是参数。
    该函数与 array_walk() 函数的不同在于可以操作更深的数组(一个数组中包含另一个数组)。

排序数组

  • sort:按照字母或数字升序排序(中文按照首字母)—-数组的键不跟着排序
    第二个参数可选:可以传递(SORT_REGULAR(默认值),SORT_NUMERIC,SORT_STRING)
//没有第二个参数$fruit=array('banner','orange','apple');print_r($fruit);//按照key顺序排序sort($fruit);print_r($fruit); //输出顺序是apple,banner,orange//有第二个参数$number=array('2','12');print_r($number);//2,12sort($number,SORT_STRING);print_r($number);//12,2sort($number,SORT_NUMERIC);print_r($number);//2,12
  • asort:数组的键跟着一起排序,即保持原始的键值关联
$fruit=array('banner','orange','apple');asort($fruit);print_r($fruit);
  • ksort:按照键名排序
$fruit=array('a'=>banner','c'=>'orange','b'=>'apple');ksort($fruit);//按照abc排序
  • rsort,arsort,krsort:实现反向排序

  • uasort(array,myfunction) 使用用户自定义的比较函数对数组中的键值进行排序。并保持索引关联

  • uksort(array,myfunction) 使用用户自定义的比较函数对数组中的键名进行排序。

  • usort(array,myfunction) 使用用户自定义的比较函数对数组进行排序。

  • natsort() 函数用”自然排序”算法对数组进行排序。键值保留它们原始的键名。(区分大小写)

  • natcasesort() 函数用”自然排序”算法对数组进行排序。(不区分大小写)键值保留它们原始的键名。在自然排序算法中,数字 2 小于 数字 10。在计算机排序算法中,10 小于 2,因为 “10” 中的第一个数字小于 2。

  • shuffle:将数组元素随机排序,键不跟着排序

  • array_reverse:给出一个原来数组的反向排序
    注意:对数组进行反向,会返回一个新数组,键不跟着排序

  • array_multisort() 函数返回排序数组。函数先对第一个数组进行排序,接着是其他数组,如果两个或多个值相同,它将对下一个数组进行排序。
    注释:字符串键名将被保留,但是数字键名将被重新索引,从 0 开始,并以 1 递增。
    语法:array_multisort(array1,sorting order,sorting type,array2,array3…)
    参数:array1必需。
    sorting order:SORT_ASC (默认。按升序排列 (A-Z)) SORT_DESC (按降序排列 (Z-A))
    sorting type:SORT_REGULAR - 默认。SORT_NUMERIC - 按数字顺序排列。SORT_STRING - 按字母顺序排列。
    array2 可选。规定数组。
    array3 可选。规定数组。

插入数组

  • array_unshift:返回值将得到目前数组的元素个数;没有创建一个新数组,而是在原有数组基础上在开头插入数据。

  • array_push:返回值将得到目前数组的元素个数;没有创建一个新数组,而是在原有数组基础上在结尾插入数据。

  • array_fill_keys(keys,value) 函数使用指定的键和值填充数组。
    参数:keys必需,使用该数组的值作为键。非法值将被转换为字符串。value 必需。填充数组所使用的值。
    返回一个新数组,不改变原数组。

  • array_fill(index,number,value):函数用给定的值填充数组,返回一个新数组
    index 必需。被返回数组的第一个索引。
    number 必需。规定要插入的元素数。
    value 必需。规定供填充数组所使用的值。

  • array_pad(array,size,value)用值将数组填补到指定长度。
    如果您将 size 参数设置为负数,该函数会在原始数组之前插入新的元素(参见下面的实例)。
    注释:如果 size 参数小于原始数组的长度,该函数不会删除任何元素。

删除数组

  • array_shift:将开头的元素移除

  • array_pop:将结尾元素移除

  • array_unique(array,sortingtype) 函数移除数组中的重复的值,并返回结果数组。返回的数组中键名不变。
    array 必需。规定数组。
    sortingtype 可选。规定如何比较数组元素/项目。可能的值:SORT_STRING ,SORT_REGULAR ,SORT_NUMERIC,SORT_LOCALE_STRING

  • array_filter() 函数用回调函数过滤数组中的值。
    该函数把输入数组中的每个键值传给回调函数。如果回调函数返回 true,则把输入数组中的当前键值返回结果数组中。数组键名保持不变。

随机取出数组

  • array_rand:用来获取一个数组中的键,第二个参数表明随机获取几个(大于1时会返回一个数组)

数组指针的操作

  • current:获取指针当前的元素,默认指针在第一条,指针不会自动移到下一个

  • pos(): current() 的别名。

  • next:指针移到下一个

  • reset:指针回到初始位置(即第一个元素)

  • prev:指针回到前一个

  • end:将数组的内部指针指向最后一个元素。

  • key() 函数返回数组内部指针当前指向元素的键名。

统计数组

  • count():统计数组下标的个数

  • sizeof() count() 的别名。

  • array_count_values:统计数组内所有值出现的个数,返回一个数组

数组与变量转换

  • extract:通过该函数,将数组键变成变量,然后将值赋给这个变量
$a='';//初始化是正规的,不初始化也可以$fruit=array('a'=>banner','c'=>'orange','b'=>'apple');extract($fruit);echo $a;//输出bannerecho $b;//输出appleecho $c;//输出orange
  • compact() 函数创建包含变量名和它们的值的数组。
    注释:任何没有变量名与之对应的字符串都被略过。

比较数组(差集)

自定义方法/比较 键值 键名 键值、键名 不自定义 array_diff array_diff_key array_diff_assoc 键名 array_udiff array_diff_ukey array_diff_uassoc 键值 array_udiff_assoc 键名、键值 array_udiff_uassoc
  • array_diff() 函数返回两个数组的差集数组(只比较值)。该数组包括了所有在被比较的数组中,但是不在任何其他参数数组中的键值。在返回的数组中,键名保持不变。仅有值用于比较。
    array_diff(array1,array2,array3…):都是与第一个数组进行比较。

  • array_diff_assoc()函数用于比较两个(或更多个)数组的键名和键值 ,并返回差集。
    该函数比较两个(或更多个)数组的键名和键值,并返回一个差集数组,该数组包括了所有在被比较的数组(array1)中,但是不在任何其他参数数组(array2 或 array3 等等)中的键名和键值。

  • array_diff_key() 函数用于比较两个(或更多个)数组的键名 ,并返回差集。

  • array_diff_uassoc() 比较数组,返回差集(比较键名和键值,使用用户自定义的键名比较函数)。
    语法:array_diff_uassoc(array1,array2,array3…,myfunction);

  • array_diff_ukey() 比较数组,返回差集(只比较键名,使用用户自定义的键名比较函数)。

  • array_udiff() 比较数组,返回差集(只比较值,使用一个用户自定义的键名比较函数)。

  • array_udiff_assoc() 比较数组,返回差集(比较键和值,使用内建函数比较键名,使用用户自定义函数比较键值)。

  • array_udiff_uassoc() 比较数组,返回差集(比较键和值,使用两个用户自定义的键名比较函数)。

比较数组(交集)

自定义方法/比较 键值 键名 键值、键名 不自定义 array_intersect array_intersect_key array_intersect_assoc 键名 array_uintersect array_intersect_ukey array_intersect_uassoc 键值 array_uintersect_assoc 键名、键值 array_uintersect_uassoc
  • array_intersect() 函数用于比较两个(或更多个)数组的键值,并返回交集。(仅有值用于比较。)
    该函数比较两个(或更多个)数组的键值,并返回交集数组,该数组包括了所有在被比较的数组(array1)中,同时也在任何其他参数数组(array2 或 array3 等等)中的键值。

  • array_intersect_assoc() 函数用于比较两个(或更多个)数组的键名和键值,并返回交集。
    该函数比较两个(或更多个)数组的键名和键值,并返回交集数组,该数组包括了所有在被比较的数组(array1)中,同时也在任何其他参数数组(array2 或 array3 等等)中的键名和键值。

  • array_intersect_key() 比较数组,返回交集(只比较键名)。

  • array_intersect_uassoc() 函数用于比较两个(或更多个)数组的键名和键值 ,并返回交集。
    注释:该函数使用用户自定义函数比较键名!
    语法:array_intersect_uassoc(array1,array2,array3…,myfunction)
    参数:myfunction必需。定义可调用比较函数的字符串。如果第一个参数小于、等于或大于第二个参数,则该比较函数必须返回小于、等于或大于 0 的整数。

  • array_intersect_ukey() 比较数组,返回交集(只比较键名,使用用户自定义的键名比较函数)。

  • array_uintersect() 比较数组,返回交集(只比较值,使用一个用户自定义的键名比较函数)。

  • array_uintersect_assoc() 比较数组,返回交集(比较键和值,使用内建函数比较键名,使用用户自定义函数比较键值)。

  • array_uintersect_uassoc() 比较数组,返回交集(比较键和值,使用两个用户自定义的键名比较函数)。

合并数组

  • array_combine() 函数通过合并两个数组来创建一个新数组,其中的一个数组是键名,另一个数组的值为键值。注释:键名数组和键值数组的元素个数必须相同!

  • array_merge() 函数把一个或多个数组合并为一个数组。
    提示:您可以向函数输入一个或者多个数组。
    注释:如果两个或更多个数组元素有相同的键名,则最后的元素会覆盖其他元素。
    注释:如果您仅向 array_merge() 函数输入一个数组,且键名是整数,则该函数将返回带有整数键名的新数组,其键名以 0 开始进行重新索引。

  • array_merge_recursive() 函数把一个或多个数组合并为一个数组。不会进行键名覆盖,而是将多个相同键名的值递归组成一个数组。

数组计算

  • array_product() 函数计算并返回数组的乘积。

  • array_sum() 函数返回数组中所有值的和。

数组替换

  • array_replace() 函数使用后面数组的值替换第一个数组的值。
    语法:array_replace(array1,array2,array3…)

  • array_replace_recursive(array1,array2,array3…)递归地使用后面数组的值替换第一个数组的值。

数组裁剪

  • array_keys(array,value,strict) 函数返回包含数组中所有键名的一个新数组。
    如果提供了第二个参数,则只返回键值为该值的键名。
    如果 strict 参数指定为 true,则 PHP 会使用全等比较 (===) 来严格检查键值的数据类型。

  • array_values() 返回数组中所有的值。(但不保留键名。)

  • array_reduce(array,myfunction,initial) 通过使用用户自定义函数,以字符串返回数组。
    array 必需。规定数组。
    myfunction 必需。规定函数的名称。
    initial 可选。规定发送到函数的初始值。

  • array_slice(array,start,length,preserve)在数组中根据条件取出一段值,并返回。
    注释:如果数组有字符串键,所返回的数组将保留键名。
    参数:preserve可选。规定函数是保留键名还是重置键名。可能的值(true - 保留键名,false - 默认。重置键名)

  • array_splice(array,start,length,array) 函数从数组中移除选定的元素,并用新元素取代它。该函数也将返回包含被移除元素的数组。如果函数没有移除任何元素(length=0),则将从 start 参数的位置插入被替换数组(参见例子 2)。
    注释:不保留被替换数组中的键名。
    参数:必需。规定数组。start:必需,删除元素的开始位置。length:删除的长度,正数:移除,负数,移除从start开始到末尾倒数length为止,中间所有元素,若设置,移除start以后所有元素。

  • array_chunk():把数组分割为新的数组块 ,返回一个多维的索引数组
    array_chunk(array,size,preserve_key):array必需,size必需
    preserve_key:true(保留原始数组的键名)false(默认,每个结果数组使用从零开始的新数组索引)

  • array_column() 返回输入数组中某个单一列的值。
    array_column(array,column_key,index_key)
    参数:array:必需,column_key:必需,index_key:可选,用作返回数组的索引/键的列

<?php// 表示由数据库返回的可能记录集的数组$a = array(  array(    'id' => 5698,    'first_name' => 'Bill',    'last_name' => 'Gates',  ),  array(    'id' => 4767,    'first_name' => 'Steve',    'last_name' => 'Jobs',  )  array(    'id' => 3809,    'first_name' => 'Mark',    'last_name' => 'Zuckerberg',  ));$last_names = array_column($a, 'last_name', 'id');print_r($last_names);?>

输出:

Array(  [5698] => Gates  [4767] => Jobs  [3809] => Zuckerberg)

查询数组

  • in_array() 检查数组中是否存在指定的值。
    语法:in_array(search,array,type)
    参数:

  • array_key_exists() 函数检查某个数组中是否存在指定的键名,如果键名存在则返回 true,如果键名不存在则返回 false。
    提示:请记住,如果您指定数组的时候省略了键名,将会生成从 0 开始并且每个键值对应以 1 递增的整数键名。
    语法:array_key_exists(key,array)

  • array_search(value,array,strict) 函数在数组中搜索某个键值,并返回对应的键名。
    参数:strict(true,false - 默认)

其他函数

  • array_change_key_case():将数组的所有键转换为大写字母或小写字母
    第二个参数:CASE_LOWER(默认,小写),CASE_UPPER(大写)

  • array_flip() 函数用于反转/交换数组中所有的键名以及它们关联的键值。返回一个反转后的数组,如果同一值出现了多次,则最后一个键名将作为它的值,所有其他的键名都将丢失。
    如果原数组中的值的数据类型不是字符串或整数,函数将报错。

原创粉丝点击