1 、array_column()
array_column(array,column_key,index_key);
$arr = [
[
'id' => 1,
'name' => 'a'
],[
'id' => 2,
'name' => 'b',
], [
'id' => 4,
'name' => 'c'
], [
'id' => 3,
'name' => 'd'
]
];
print_r(array_column($arr,'name'));
//运行结果:Array ( [0] => a [1] => b [2] => c [3] => d )
print_r(array_column($arr,'name','id'));
//运行结果:Array ( [1] => a [2] => b [4] => c [3] => d )
print_r(array_column($arr, null, 'name'));
//运行结果:Array ( [a] => Array ( [id] => 1 [name] => a ) [b] => Array ( [id] => 2 [name] => b ) [c] => Array ( [id] => 4 [name] => c ) [d] => Array ( [id] => 3 [name] => d ) )
2 、array_search()
数组中搜索键值,并返回它的键名:
<?php
$a=array("a"=>"red","b"=>"green","c"=>"blue");
echo array_search("red",$a);
?>
运行结果:a
3 、array_splice()
1删除key 数组重新排序
$a1=array("0"=>"red","1"=>"green",'2'=>"black","3"=>'purl');
array_splice($a1,2,1);
print_r($a1);
结果:Array ( [0] => red [1] => green [2] => purl )
2删除key 用新的值替代删除的
<?php
$a1=array("a"=>"red","b"=>"green","c"=>"blue","d"=>"yellow");
$a2=array("a"=>"purple","b"=>"orange");
print_r(array_splice($a1,0,2,$a2));
?>
结果:Array ( [a] => red [b] => green )
4 、current()
该函数返回数组中的当前元素的。
每个数组中都有一个内部的指针指向它的"当前"元素,初始指向插入到数组中的第一个元素。
提示:该函数不会移动数组内部指针。要做到这一点,请使用 next() 和 prev() 函数。
<?php
$people = array("Bill", "Steve", "Mark", "David");
echo current($people) . "<br>";
?>
结果:Bill
5、array_filter()
加闭包函数过滤数组
$arr = array(
array(
'catid' => 2,
'catdir' => 'notice',
),
array(
'catid' => 5,
'catdir' => 'subject',
),
array(
'catid' => 6,
'catdir' => 'news'
),
);
$catid = 5;
$res = array_filter($arr, function($param) use ($catid) {
return $param['catid'] == $catid;
});
print_r($res);
结果:
array(1) {
[1]=>
array(2) {
["catid"]=>
int(5)
["catdir"]=>
string(7) "subject"
}
}
6、uasort() 排序
//按基础价格从低到高排序
uasort($data, function($a, $b) {
if ($a['base_price']== $b['base_price']) return 0;
return ($a['base_price']< $b['base_price'])?-1:1;
});
/* is_free降序 id升序*/
uasort($list, function($a, $b) {
if ($a['is_free'] > $b['is_free']) {
return -1;
} elseif ($a['is_free'] == $b['is_free']) {
if ($a['id']==$b['id']) return 0;
return ($a['id']<$b['id'])?-1:1;
} else {
return 1;
}
});