PHP数组常用函数总结

1.数组的键/值操作函数

array_values($arr);  //获得数组的值
array_keys($arr);  //获得数组的键名
array_flip($arr);  //数组中的值与键名互换(如果有重复前面的会被后面的覆盖)
in_array("apple",$arr);  //在数组中检索apple
array_search("apple",$arr);  //在数组中检索apple ,如果存在返回键名
array_key_exists("apple",$arr);  //检索给定的键名是否存在数组中
isset($arr[apple]):   //检索给定的键名是否存在数组中

2.统计数组元素的个数和唯一性

count();//计算数组中的单元数目,或对象中的属性个数
array_count_values();//统计数组中所有的值
array_unique();//移除数组中重复的值

3.使用回调函数处理数组的函数

------------------------------------------------------------------------------------
array_walk($arr,'function','words');  //使用用户函数对数组中的每个成员进行处理(第三个参数传递给回调函数function)
$fruits = array("d" => "lemon", "a" => "orange", "b" => "banana", "c" => "apple");

function test_alter(&$item1, $key, $prefix)
{
    $item1 = "$prefix: $item1";
}

function test_print($item2, $key)
{
    echo "$key. $item2
\n"
; } echo "Before ...:\n"; array_walk($fruits, 'test_print'); array_walk($fruits, 'test_alter', 'fruit'); echo "... and after:\n"; array_walk($fruits, 'test_print'); //以上例程会输出: Before ...: d. lemon a. orange b. banana c. apple ... and after: d. fruit: lemon a. fruit: orange b. fruit: banana c. fruit: apple ------------------------------------------------------------------------------------ array_map("function",$arr1,$arr2); //可以处理多个数组(当使用两个或更多数组时,他们的长度应该相同) function cube($n) { return($n * $n * $n); } $a = array(1, 2, 3, 4, 5); $b = array_map("cube", $a); print_r($b); //以上例程会输出: Array ( [0] => 1 [1] => 8 [2] => 27 [3] => 64 [4] => 125 ) ------------------------------------------------------------------------------------ array_filter($arr,"function"); //使用回调函数过滤数组中的每个元素,如果回调函数为TRUE,数组的当前元素会被包含在返回的结果数组中,//数组的键名保留不变 function odd($var) { // returns whether the input integer is odd return($var & 1); } function even($var) { // returns whether the input integer is even return(!($var & 1)); } $array1 = array("a"=>1, "b"=>2, "c"=>3, "d"=>4, "e"=>5); $array2 = array(6, 7, 8, 9, 10, 11, 12); echo "Odd :\n"; print_r(array_filter($array1, "odd")); echo "Even:\n"; print_r(array_filter($array2, "even")); //以上例程会输出: Odd : Array ( [a] => 1 [c] => 3 [e] => 5 ) Even: Array ( [0] => 6 [2] => 8 [4] => 10 [6] => 12 ) ------------------------------------------------------------------------------------ array_reduce($arr,"function","*"); //转化为单值函数(*为数组的第一个值) function sum($carry, $item) { $carry += $item; return $carry; } function product($carry, $item) { $carry *= $item; return $carry; } $a = array(1, 2, 3, 4, 5); $x = array(); var_dump(array_reduce($a, "sum")); // int(15) var_dump(array_reduce($a, "product", 10)); // int(1200), because: 10*1*2*3*4*5 var_dump(array_reduce($x, "sum", "No data to reduce")); // string(17) "No data to reduce" ------------------------------------------------------------------------------------

4.数组的排序函数

//通过元素值对数组排序
sort($arr);  //由小到大的顺序排序(第二个参数为按什么方式排序)忽略键名的数组排序
rsort($arr);  //由大到小的顺序排序(第二个参数为按什么方式排序)忽略键名的数组排序
usort($arr,"function");  //使用用户自定义的比较函数对数组中的值进行排序(function中有两个参数,0表示相等,正数表示第一个大于第二个,负数表示第一个小于第二个)忽略键名的数组排序
asort($arr);  //由小到大的顺序排序(第二个参数为按什么方式排序)保留键名的数组排序
arsort($arr);  //由大到小的顺序排序(第二个参数为按什么方式排序)保留键名的数组排序
uasort($arr,"function");  //使用用户自定义的比较函数对数组中的值进行排序(function中有两个参数,0表示相等,正数表示第一个大于第二个,负数表示第一个小于第二个)保留键名的数组排序

//通过键名对数组排序
ksort($arr);  //按照键名正序排序
krsort($arr);  //按照键名逆序排序
uksort($arr,"function");  //使用用户自定义的比较函数对数组中的键名进行排序(function中有两个参数,0表示相等,正数表示第一个大于第二个,负数表示第一个小于第二个)

//自然排序法排序
natsort($arr);  //自然排序(忽略键名)
natcasesort($arr);  //自然排序(忽略大小写,忽略键名)

5.拆分、合并、分解和接合数组

 array_slice()//从数组中取出一段
 array_splice()//删除
 array_combine()//合并
 array_merge();//合并
 array_intersect();//多个数组的交集
 array_intersect_assoc($arr1,$arr2);  //返回交集结果数组,键名也做比较
 array_diff();//返回多个数组的差集
 array_diff_assoc($arr1,$arr2,$arr3);  //返回差集结果数组,键名也做比较

6.数组与数据结构

//1.使用数组实现堆栈 //先进后出
array_push(); //将一个或多个单元压入数组的末尾(入栈)
array_pop();//弹出数组最后一个单元(出栈)
//2.使用数组实现队列 //先进先出
array_unshift();//在数组开头插入一个或多个单元
array_shift(); //将数组开头的单元移出数组
unset();//释放给定的变量

其他有用的数组处理函数

range(0,12);  //创建一个包含指定范围单元的数组
array_reverse($arr,TRUE);  //返回一个单元顺序与原数组相反的数组,如果第二个参数为TRUE保留原来的键名
array_rand($arr,2);  //从数组中随机取出一个或 多个元素
shuffle($arr);  //将数组的顺序打乱
array_sum($arr);  //对数组内部的所有元素做求和运算

你可能感兴趣的:(PHP)