PHP 有很多非常好用的數組處理函數,查看 PHP 官方文檔,數組函數都有 80 多個,但是在使用過程,還是有一些數組的操作使用比較多,我就把這些函數整理成工具函數,然後整合到 WPJAM Basic 中,方便自己的二次開放的方便使用。
wpjam_array_push關聯數組插入元素是無法指定位置的,只能插在最前或者最後面,所以第一個函數就是可以向關聯數組指定的 Key 之前插入元素:
function wpjam_array_push($array, $data=null, $key=false){
$data = (array)$data;
$offset = ($key===false)?false:array_search($key, array_keys($array));
$offset = ($offset)?$offset:false;
if($offset){
return array_merge(
array_slice($array, 0, $offset),
$data,
array_slice($array, $offset)
);
}else{ // 沒指定 $key 或者找不到,就直接加到末尾
return array_merge($array, $data);
}
}
比如下面在 $columns 的 'author' 之前插入 ['page_title'=>'頁面標題'] :
wpjam_array_push($columns, ['page_title'=>'頁面標題'], 'author');
PHP 的 array_filter() 函數可以通過回調函數過濾數組的元素,但是返回的是過濾後的數組,不過很多時候,我們只是簡單的要求返回第一個通過測試的元素:
function wpjam_array_first($array, $callback=null){
if($callback && is_callable($callback)){
foreach($array as $key => $value){
if(call_user_func($callback, $value, $key)){
return $value;
}
}
}else{
return current($array);
}
}
使用非常簡單的:
$array = [100, 200, 300];
$value = wpjam_array_first($array, function($value) {
return $value >= 150;
});
// 200
要從關聯數組中移除並返回指定的鍵值,一般需要兩步操作,先取出,然後 unset 數組中的鍵值對,把這兩個步驟合成一個函數:
function wpjam_array_pull(&$array, $key){
if(isset($array[$key])){
$value = $array[$key];
unset($array[$key]);
return $value;
}else{
return null;
}
}
然後直接調用即可:
$name = wpjam_array_pull($array, 'name');
wpjam_array_excerptPHP 從關聯數組中移除指定的鍵值對,一般使用 unset 函數,如果要移除多個鍵值對,就要調用多次的 unset 函數,所以就合併成一個函數 :
function wpjam_array_except($array, $keys){
if(is_string($keys)){
$keys = [$keys];
}
foreach($keys as $key){
unset($array[$key]);
}
return $array;
}
這樣就可以通過下面方式移除鍵值對了:
$array = wpjam_array_except($array, ['price','description']);
如果僅僅移除一個鍵值對,還可以直接傳遞字符串:
$array = wpjam_array_except($array, 'price');
點擊下面公眾號卡片關注「WordPress果醬」