// 1.array_filter
// 返回过滤后的数组
$resArr = array_filter(["a"=>1,"b"=>2], function ($value) {
return $value == 1;// 为true的将保留值
});
$resArr = array_filter(["a"=>1,"b"=>2], function ($value, $key) {
return $value == 1 || $key == 'a';// 为true的将保留值
}, ARRAY_FILTER_USE_BOTH);
$resArr = array_filter(["a"=>1,"b"=>false,"c"=>'']);
// 2. array_walk
// $originArr数组的元素应用回调,可以修改数组元素的值
$originArr = [1,2,3];
array_walk($originArr, function (&$value, $key, $userValue) {
$value *= $userValue;
}, 2);
// 3.array_map,比较特殊,回调是第一个参数
// 返回映射结果
$returnRes = array_map(function ($value) {
return $value * 2;
}, [1,2,3]);
// 4.array_reduce
// 求1+2+3+4+5的和
// $carry是前一次的返回值,第一次的值是$init
// $item是本次迭代的元素值
// 返回值是回调函数最后一次的返回值
$result = array_reduce([1, 2, 3, 4, 5], function($carry, $ele){
$carry += $ele;
return $carry;
},0);
// 5. array_multisort
// 二维数组排序
$arr = [
['name' => 'a', 'score' => 98],
['name' => 'b', 'score' => 99],
['name' => 'c', 'score' => 96],
['name' => 'd', 'score' => 98],
];
foreach ($arr as $key => $row) {
$score[$key] = $row['score'];
$name[$key] = $row['name'];
}
// 参数1:一定是个要排序的数组
// 参数2:是排序顺序,可以省略
// 参数3:是排序规则,可以省略
// ...重复上面一套规则,后面的数组顺序跟随前面的那个数组的排序,如果值相同的话再按自身的排序规则来
$returnRes = array_multisort($score, SORT_DESC, $name, SORT_DESC, SORT_REGULAR, $arr);
// 注意:排序后$arr,关联(string)键名保持不变,但数字键名会被重新索引
// 6. ksort,krsort排序
$arr = [
0 => 'a',
1 => 'b',
2 => 'c',
3 => 'd'
];
// 按key升序排序
ksort($arr);
// 按key降序排序
krsort($arr);
// 7.array_splice
// 裁剪拼接
$input = ["red", "green", "blue", "yellow"]; // 需要裁剪的数组,必须赋值给变量后传入array_splice,因为是引用的方式
$replace = ['black']; // 替换裁剪的数组
// 将$input数组的第2个和第3个剪切掉,并且用black数组拼接上去
// 裁剪开始offset 1(这个不是key值,是顺序值),裁剪长度2,也就是green和blue元素
$return = array_splice($input, 1, 2, $replace);
// 原来的是数组被裁剪替换["red", "black", "yellow"]
print_r($input);
// 返回剪掉的那部分数组["green", "blue"]
print_r($return);
// 8. array_column
$arr = [
['id'=>1,'name'=>'张三']
];
array_column($arr , null, 'id');// [1 => ['id'=>1,'name'=>'张三']]
array_column($arr , 'name', 'id'); // [1 => '张三']
// 9.array_search
// 返回值的key
$arr = [
'one'=>'一',
'two'=>'二',
];
echo array_search('二',$arr); // two
echo array_search('三',$arr); // false
// 10.in_array
in_array('012',[12]);//true
in_array('012',[12],true);//false,文本类型的比较要用这个
最后修改:2023 年 12 月 30 日
© 允许规范转载