PHP常用数组函数

来源:互联网 发布:暴风影音mac无法播放字幕 编辑:程序博客网 时间:2024/06/08 16:20
  • array_change_key_case() : 把数组中所有键更改为小写或者大写
$testArr = ['B' => 1,'T' => 2];$arr = array_change_key_case($testArr);var_dump($arr); //array(2) { ["b"]=> int(1) ["t"]=> int(2) }
  • array_chunk() :将一个数组分隔为新的数组块
$testArr = [1,2,3,4];$arr = array_chunk($testArr,2);var_dump($arr); //array(2) { [0]=> array(2) { [0]=> int(1) [1]=> int(2) } [1]=> array(2) { [0]=> int(3) [1]=> int(4) } }
  • array_column() : 返回输入数组中某个单一列的值
$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');print_r($last_names);   //Array ( [0] => Gates [1] => Jobs [2] => Zuckerberg )
  • array_combine() : 通过合并两个数组来创建一个新的数组,其中第一个参数数组是key,第二个参数数组是value
$arr1 = ['bill','steve','mark'];$arr2 = [50,51,29];$newArr = array_combine($arr1, $arr2);print_r($newArr);//Array ( [bill] => 50 [steve] => 51 [mark] => 29 )
  • array_count_values() : 统计数组所有value出现的次数
$arr = ['bill','steve','mark','bill'];$newArr = array_count_values($arr);print_r($newArr); //Array ( [bill] => 2 [steve] => 1 [mark] => 1 )
  • array_diff() : 返回两个数组的差集数组。该差集数组包括第一个参数数组中有的但是剩下参数数组中没有的元素,只比较value
$arr = ['bill','steve', 12=>'mark'];$arr2 = ['bill','steve','like'];$arr3 = [1,2,3];$newArr = array_diff($arr3,$arr,$arr2);print_r($newArr); //Array ( [bill] => 2 [steve] => 1 [mark] => 1 )
  • array_diff_assoc() : 比较多个数组(常用来比较两个数组)的键名和键值,并返回差集。
$arr1 = [    'b' => 199,    'd' => 520,    'ef' => 1];$arr2 = [    'b' => 199,    'd' => 520,    'de' => 1];$newArr = array_diff_assoc($arr1,$arr2);print_r($newArr); //Array ( [ef] => 1 )
  • array_diff_key() : 比较多个数组(常用来比较两个数组)的键名,并返回差集。
$arr1 = [    'b' => 199,    'd' => 520,    'e123f' => 1];$arr2 = [    'b' => 199,    'd' => 520,    'de' => 1];$newArr = array_diff_key($arr1, $arr2);print_r($newArr); //Array ( [e123f] => 1 )
  • array_diff_uassoc() : 使用自定义函数来比较键值和键名,并返回差集。
$arr1 = [    'b' => 199,    'd' => 520,    'e123f' => 1];$arr2 = [    'b' => 199,    'd' => 520,    'de' => 1];function keyDiff($a, $b){    if($a === $b) {        return 0;    }    return ($a > $b) ? 1 : -1;}$newArr = array_diff_uassoc($arr1, $arr2,'keyDiff');print_r($newArr); //Array ( [e123f] => 1 )
  • array_diff_ukey() : 使用自定义函数比较两个(或者多个)数组的key,并返回差集
$a1 = array("a"=>"red","b"=>"green","c"=>"blue");$a2 = array("a"=>"blue","b"=>"black","e"=>"blue");function keyDiff($a, $b){    if($a === $b) {        return 0;    }    return ($a > $b) ? 1 : -1;}$newArr = array_diff_ukey($a1, $a2,'keyDiff');print_r($newArr); //Array ( [c] => blue )
  • array_fill() : 用给定的键值填充数组
$newArr = array_fill(4,3,'like');var_dump($newArr); //array(3) { [4]=> string(4) "like" [5]=> string(4) "like" [6]=> string(4) "like" }
  • array_fill_keys() : 用给定的键数组和值来填充数组
$keysArr = ['a','b','c'];$newArr = array_fill_keys($keysArr,'like');print_r($newArr); //Array ( [a] => like [b] => like [c] => like )
  • array_filter() : 使用指定的回调函数过滤数组元素
$arr = [1,2,'test',999];$newArr =array_filter($arr,'is_string');var_dump($newArr); //array(1) { [2]=> string(4) "test" }
  • array_flip() : 反转数组的键和值
$arr = ['a' => 9, 'b' => 11, 'c' => 13];$newArr = array_flip($arr);print_r($newArr); //Array ( [9] => a [11] => b [13] => c )
  • array_intersect() : 比较数组的键值(不比较键名),返回交集
$a1=array("a"=>"red","b"=>"green","c"=>"blue","d"=>"yellow");$a2=array("e"=>"red","f"=>"green","g"=>"blue");$newArr = array_intersect($a1, $a2);print_r($newArr); //Array ( [a] => red [b] => green [c] => blue )
  • array_intersect_assoc() : 比较数组的键值和键名,返回交集
$a1 = array("a"=>"red","b"=>"green","c"=>"blue","d"=>"yellow");$a2 = array("a"=>"red","b"=>"green","c"=>"blue");$newArr = array_intersect_assoc($a1,$a2);print_r($newArr); //Array ( [a] => red [b] => green [c] => blue )
  • array_intersect_key() : 比较数组的键名(不比较键值),返回交集
$a1 = array("a"=>"red","b"=>"green","c"=>"blue");$a2 = array("a"=>"red","c"=>"blue","d"=>"pink");$newArr = array_intersect_key($a1,$a2);print_r($newArr); //Array ( [a] => red [c] => blue )
  • array_intersect_ukey() : 使用自定义方法方法比较数组的键名(不比较键值),返回交集
function myfunction($a,$b){    if ($a===$b)    {        return 0;    }    return ($a>$b)?1:-1;}$a1 = array("a"=>"red","b"=>"green","c"=>"blue");$a2 = array("d"=>"red","b"=>"green","e"=>"blue");$newArr = array_intersect_ukey($a1, $a2, 'myfunction');print_r($newArr); //Array ( [b] => green )
  • array_merge() : 合并一个或多个数组,如果输入的数组中有相同的字符串键名,则该键名后面的值将覆盖前一个值。然而,如果数组包含数字键名,后面的值将不会覆盖原来的值,而是附加到后面。
$arr1 = ['a','b'=>'b','c'];$arr2 = ['e','b'=>'f','g'];$newArr = array_merge($arr1, $arr2);print_r($newArr); //Array ( [0] => a [b] => f [1] => c [2] => e [3] => g )
  • array_merge_recursive():合并一个或多个数组,该函数与 array_merge() 函数的区别在于处理两个或更多个数组元素有相同的键名时。array_merge_recursive() 不会进行键名覆盖,而是将多个相同键名的值递归组成一个数组。
$arr1 = ['a','b'=>'b','c'];$arr2 = ['e','b'=>'f','g'];$newArr = array_merge_recursive($arr1, $arr2);print_r($newArr); //Array ( [0] => a [b] => Array ( [0] => b [1] => f ) [1] => c [2] => e [3] => g )
  • array_multisort() : 这个函数相对复杂,可以看下这篇博客关于PHP array_multisort() 函数的理解

  • array_pad(): 以指定长度将一个值填充进数组。

$arr1 = [1,2,3];$newArr = array_pad($arr1,5,'ok');print_r($newArr); //Array ( [0] => 1 [1] => 2 [2] => 3 [3] => ok [4] => ok )
  • array_pop() : 弹出数组最后一个元素(出栈)
$arr = ['red','green','blue'];$fruit = array_pop($arr);print_r($arr); //Array ( [0] => red [1] => green )print_r($fruit); //blue