一、键值搜索。in_array、array_search
//一维数组搜索值是否存在
$array = [
'one' => 1,
'two' => 2,
];
in_array(1,$array);#返回true, 需要注意的是in_array的松散类型陷阱
array_search(2,$array);#返回'two'
array_search(3,$array);#返回false
//二维数组搜索值是否存在
$array = [
'one' => ['a' => 1, 'b' => 2, 'c' => 3],
'two' => ['a' => 4, 'b' => 5, 'c' => 6],
];
in_array(6, array_column($array, 'c', true));#返回true
array_search(3, array_column($array, 'c'));#返回0 (注意:不是'one')
array_search(6, array_column($array, 'a'));#返回false
二、数组删除特定的项
/****************给定键名/索引****************/
//如果是关联数组
unset($array[$key]);
//如果是索引数组
array_splice($array,$index,1);
/****************给定键值****************/
//用array_search搜索一下键名,再使用上边的方法
三、关联数组转索引数组 或 不连续的索引数组转连续的索引数组。
array_values($array);
四、二维数组(一维索引,二维关联 )排序
//$array为二维数组,'a'为排序的字段,SORT_DESC倒序
array_multisort(array_column($array, 'a'), SORT_DESC, $array);
五、二维数组,使用其中一个字段作为键名
$array = [
['id' => 1, 'title' => 'a'],
['id' => 3, 'title' => 'c'],
['id' => 2, 'title' => 'b']
];
//只更改一维键名
return array_column($array, null, 'id');
[
'1' => ['id' => 1, 'title' => 'a'],
'2' => ['id' => 2, 'title' => 'b'],
'3' => ['id' => 3, 'title' => 'c'],
]
//另一个字段作为健值
return array_column($array,'title','id');
[
'1' => 'a',
'2' => 'b',
'3' => 'c'
]