list() 提取数组中多个值
void list(mixed …)
将数组 $sales 值赋给其它变量,
相当于 $a = $sales[0];
b
=
b =
b=sales[1];
c
=
c =
c=sales[2];
$sales = [
['Northeast', date('m-d'), 12.54],
['Northwest', date('m-d'), 563.90],
['Southeast', date('m-d'), 16.12],
];
list($a, $b, $c) = $sales;
输出:
$a
Array([0] => Northeast[1] => 06-15[2] => 12.54)
$b
Array([0] => Northwest[1] => 06-15[2] => 563.9)
$c
Array([0] => Southeast[1] => 06-15[2] => 16.12)
range() 用预定义的值生成数组
参数1开始,参数2结束,参数3步长
$die = range(1, 6, 2);
$list = range('A', 'Z');
输出:
Array ( [0] => 1 [1] => 3 [2] => 5 )
Array ( [0] => A [1] => B [2] => C [3] => D [4] => E …)
is_array() 检查是否数组
boolean is_array(mixed variable)
$string = is_array('string') ;
$string = is_array([]) ;
输出: bool(false), bool(true)
foreach() 输出数组
foreach ($sales as $sale_v){
print_r($sale_v);
}
array_unshift() 在数组头添加元素
$color = ['red', 'blue', 'green'];
array_unshift($color, 'yellow','pink');
输出:
Array ( [0] => yellow [1] => pink [2] => red [3] => blue [4] => green )
array_push() 在数组末尾添加元素
$color = ['red', 'blue', 'green'];
array_push($color, 'white','black');
输出:
Array ( [0] => red [1] => blue [2] => green [3] => white [4] => black )
array_shift() 在数组头删除元素
array_shift ( array &$array ) : mixed
$color = ['red', 'blue', 'green'];
array_shift($color);
输出:
Array ( [0] => blue [1] => green )
array_pop() 从数组末尾删除元素
$color = ['red', 'blue', 'green'];
array_pop($color);
输出:
Array ( [0] => red [1] => blue )
in_array() 搜索在数组是否存在某个值
$color = ['orange', 'blue', 'tan', 'yellow'];
$states = in_array('yellow', $color);
输出: bool(true)
array_search() 搜索数组中是否存在某个值,并返回对应的键
不存在会返回FALSE
$color = ['orange', 'blue', 'tan', 'yellow'];
$states = array_search('yellow', $color);
$states = array_search('black', $color);
输出: 3, bool(false)
array_keys() 获取数组键, array_values() 获取数组值
返回枚举数组
$fruit = [0 => 'apple', 1 => 'banana', 2 => 'peach', 3 => 'pear'];
$index = array_keys($fruit);
$fruits = array_values($fruit);
输出:
Array ( [0] => 0 [1] => 1 [2] => 2 [3] => 3 )
Array ( [0] => apple [1] => banana [2] => peach [3] => pear )
array_walk() 向数组传入自定义函数
array_walk 只可传入自定义函数
$color = ['red', 'blue', 'green'];
function ucword(&$value, $key){
$value = ucwords($value);
}
array_walk($color, "ucword");
输出:
Array ( [0] => Red [1] => Blue [2] => Green )
array_map() 对数组的每一个元素应用回调函数
与array_walk()不同点,array_map() 可以传入自定义函数,也可以传入系统函数,array_map() 会返回处理过的数据
$array = array('Alpha', 'atomic', 'Beta', 'bank');
$array_ucwords = array_map('ucwords' , $array);
输出:
Array( [0] => Alpha [1] => Atomic [2] => Beta [3] => Bank)
示例二:
递归,把多维数组转字符串
再转一维数组的话,对返回的字符串使用 explode()函数
function arrToStr($arr){
if(is_array($arr)){
return join(',', array_map('arrToStr', $arr));
}
return $arr;
}
$arr = [1,2,['a','b',['x','y',['k','j']]]];
$string = arrToStr($arr)
输出: 1,2,a,b,x,y,k,j
array_filter() 用回调函数过滤数组中的单元
array_filter()函数,也称为回调函数,是用于使用用户定义的函数来过滤数组的元素。
当使用array_filter()函数未指定回调函数,则它会删除false值返回true值,因此可以过滤数组的FALSE、NULL、空字符串、零0。
示例一 传入回调函数,返回奇数
示例二 不传回调函数,返回结果等于true的值
function odd($var)
{
return($var & 1);
}
$array = array_filter( ["a"=>1, "b"=>2, "c"=>3, "d"=>4, "e"=>5], "odd");
$entry = array_filter([0 => 'foo', 1 => false, 2 => -1, 3 => null, 4 => '', 5=> 0]);
输出:
Array ( [a] => 1 [c] => 3 [e] => 5)
Array ( [0] => foo [2] => -1)
array_count_values() 统计数组元素出现的次数
原数组的值作为Key,出现的次数作为值。作为一个新关联数组返回
$color = ['red', 'blue', 'green', 'red', 'blue', 'blue'];
$count = array_count_values($color);
输出:
Array ( [red] => 2 [blue] => 3 [green] => 1 )
array_unique() 剔除重复数据
$color = ['red', 'blue', 'green', 'red', 'blue', 'blue'];
$unique = array_unique($color);
输出:
Array ( [0] => red [1] => blue [2] => green )
array_flip() 交换数组的键和值
$fruit = ['apple' => 'red', 'banana' => 'yellow'];
$flip = array_flip($fruit);
输出:
Array ( [red] => apple [yellow] => banana )
natsort() 数组自然排序
为了说明什么是自然 排序,使用sort()函数作用对比,相信会一目了然。
sort() 要达到相同的效果必须加指定参数,示例 sort(array, SORT_STRING)
$number = ["number20", "number1", "number10", "number2"];
sort($number);
natsort($number);
输出:
sort(): Array ( [0] => number1 [1] => number10 [2] => number2 [3] => number20 )
natsort(): Array ( [0] => number1 [2] => number2 [1] => number10 [3] => number20 )
array_merge() 合并数组
$merge = array_merge($color, $fruit);
输出:
Array ( [0] => red [1] => blue [2] => green [apple] => red [banana] => yellow )
array_combine 合并两个数组,生成的新数组以数组1作key数组2作值
$mysql_key = ['a', 'b', 'c', 'd', 'e', 'f'];
$mysql_val = [1, 2, 3, 4, 5, 6];
$combine = array_combine($mysql_key, $mysql_val);
Array ( [a] => 1 [b] => 2 [c] => 3 [d] => 4 [e] => 5 [f] => 6 )
array_slice() 截取数组的一部分
截取前3的元素,
截取第3个之后的元素
$combine = ['a', 'b', 'c', 'd', 'e', 'f'];
$slice = array_slice($combine, 0, 3);
$slice2 = array_slice($combine, 3);
输出:
Array ( [a] => 1 [b] => 2 [c] => 3 )
Array ( [d] => 4 [e] => 5 [f] => 6 )
array_intersect() 求数组交集
array_intersect_assoc() 用于求关联数组交集,不同点是array_intersect_assoc要求键也必须一致
$intersect = array_intersect(['GZ', 'BJ', 'TJ'] , ['SH', 'SZ', 'GZ']);
输出:
Array ( [0] => GZ )
array_diff() 求数组差集
与 array_intersect() 函数功能相反
array_diff_assoc 求关联数组差集
$diff = array_diff(['GZ', 'BJ', 'TJ'] , ['SH', 'SZ', 'GZ']);
输出:
Array ( [1] => BJ [2] => TJ )
shuffle() 随机打乱数组排序
$mysql_key = ['a', 'b', 'c', 'd', 'e', 'f'];
shuffle($mysql_key);
输出:
Array ( [0] => e [1] => a [2] => b [3] => f [4] => c [5] => d )
array_sum() 数组求和
$mysql_val = [1, 2, 3, 4, 5, 6];
$sum = array_sum($mysql_val);
输出: 21
array_column() 返回二维数组中指定的一列
array_column() 返回input数组中键值为column_key的列, 如果指定了可选参数index_key,那么input数组中的这一列的值将作为返回数组中对应值的键。
$records = [
['id' => 2135, 'first_name' => 'John', 'last_name' => 'Doe',],
['id' => 3245, 'first_name' => 'Sally', 'last_name' => 'Smith',],
['id' => 5342, 'first_name' => 'Jane', 'last_name' => 'Jones',]
];
$first_names = array_column($records, 'first_name');
print_r($first_names);
输出:
Array ( [0] => John[1] => Sally[2] => Jane )
PHP 的一些函数组合
计算二维数组某个值出现的次数
5出现的次数
$list = [
['id' => 1, 'userId' => 5],
['id' => 2, 'userId' => 5],
['id' => 3, 'userId' => 6],
];
$userId = 5;
array_count_values(array_column($list, 'userId'))[$userId];
输出: 2
对二维数组排序
参数 SORT_ASC 按照上升顺序排序, SORT_DESC 按照下降顺序排序。
原理,使用array_column() 从$list数组取出 count字段组成一维数组,把此数组放入 array_multisort()第一个参数,使用DESC对其排序,第二个数组里的项目(key)对应第一个数组后也进行了排序。打印 $list,输出处理后的结果
$list = [
['city' => '郑州', 'count' => 5],
['city' => '武汉', 'count' => 12],
['city' => '成都', 'count' => 8],
];
array_multisort(array_column($list, 'count'), SORT_DESC, $list);
输出:
Array(
[0] => Array ( [city] => 武汉[count] => 12 )
[1] => Array ( [city] => 成都 [count] => 8 )
[2] => Array ( [city] => 郑州[count] => 5 )
)