很多array函数是为了序列数组准备的,并未考虑到关联数组,麻烦。
array_map,不能直接修改key值,但可以合并数组并转为序列数组:
//合并,输出序列数组 array_map(null,array_keys($arr),$arr); array_map(function($k,$v){},array_keys($arr),$arr);
array_walk,不返回数组,直接修改val,也不建议修改key,注意&$v,
array_walk($arr,function(&$v,$k){});
array_filter,根据val过滤,甚至不能获得key值
array_filter($arr,function($v){});
过滤特定key,可以使用array_diff_key,返回不同key的项
$arr = [ 'k1' => 1, 'k2' => 2, 'k3' => 3, 'k4' => 4]; $filterOutKeys = [ 'k1', 'k4' ]; $filteredArr = array_diff_key( $arr, array_flip( $filterOutKeys ) )
array_column, 根据单个key,返回数组,可添加key2返回一个序列数组
array_column($arr,$k) array_column($arr,$k,$k2) // k2=>k