WPJAM Basic 內置的數組處理函數

2021-03-02 WordPress果醬

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');

wpjam_array_first

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

wpjam_array_pull

要從關聯數組中移除並返回指定的鍵值,一般需要兩步操作,先取出,然後 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_excerpt

PHP 從關聯數組中移除指定的鍵值對,一般使用 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果醬」
每天分享 WordPress 使用技巧⏬⏬ 下載 WPJAM Basic 請點擊閱讀原文

相關焦點

  • Apache Spark 2.4 中解決複雜數據類型的內置函數和高階函數介紹
    Apache Spark 2.4 是在11月08日正式發布的,其帶來了很多新的特性具體可以參見Apache Spark 2.4 正式發布,重要功能詳細介紹,本文主要介紹這次為複雜數據類型新引入的內置函數和高階函數。本次 Spark 發布共引入了29個新的內置函數來處理複雜類型(例如,數組類型),包括高階函數。
  • 巧用 PHP 數組函數
    0x00 前言PHP 的數組是一種很強大的數據類型,與此同時 PHP 內置了一系列與數組相關的函數可以很輕易的實現日常開發的功能
  • 記錄集賦值給數組後,利用轉置函數處理多維數組的方法
    大家好,今日繼續講解VBA資料庫解決方案,今日講解的是第76講,內容是:記錄集賦值給數組後,利用轉置函數處理多維數組的方法。我在第一冊的第43講中,我講了將記錄集存入數組的方案,並通過一個Index函數在工作表中恢復數組數據的方法。今日講的是利用轉置函數來完成同樣的功能。
  • 一文學會JS的數組函數:slice()
    JavaScript內置了有很多原生函數,理解併合理運用這些函數,能大大提高我們的開發效率。本文結合實例講解slice(),後期將講解他的另兩個兄弟splice () 和split ()。這三個數組的原生函數,或許是因為它們的名字比較相似,會讓初學者有點摸不著頭腦。同時關於這三個函數之間的區別也是面試時的熱門話題!
  • VBA進階 | 數組基礎06: 與數組相關的函數——Array函數與IsArray函數
    Array函數語法Array函數返回一個Variant型數組,該數組由傳遞給該函數的參數組成。由Array函數返回的數組只可賦值給一個Variant型變量,不能賦值給已聲明為數組變量的變量。Array函數返回的數組中元素的順序與傳遞給函數的參數值的順序相同。Array函數總是返回Variant類型的數組,但元素的數據類型可以不同,這取決於傳遞給該函數的數值類型。
  • 【ADAMS】矩陣/數組函數
    矩陣/數組函數可很方便地完成針對矩陣/數組的操作。(1)矩陣/數組的基本操作函數ALIGN 將數組轉換到從特定值開始ALLM 返回矩陣元素的邏輯值ANGLES 將方向餘弦矩陣轉換為指定旋轉順序下的角度矩陣ATAN(x) 數字表達式x 的反正切值ATAN2(x1,x2) 兩個數字表達式x1,x2 的四象限反正切值(3)取整函數INT(x)
  • 最全的python內置函數整理
    Python中內置了很多函數和類型,你可以在任何時候使用它們。以下按字母表順序列出它們。
  • EXCEL中數組的應用之五:什麼是函數公式,什麼是數組公式
    一 什麼是函數,什麼是公式,什麼是數組,什麼是數組公式:1 函數的概念:這個概念我已經講過多次了,在這個平臺的開篇我就講了,如果對於唯一性輸入值value,輸出(或者return)的值也具有唯一性(這種輸入或者輸出的值沒有個數的限制),那麼具有這種變化關係的輸入和輸出關係,就稱為輸出是輸入的函數.
  • 數據科學系列:數據處理(8)--Python內置字符串處理函數
    ,與介紹R語言中字符串處理函數類似,按照Python內置的字符串處理函數和Python中的正則表達式re模塊。5 字符串函數--基於Python5.1 Python內置的字符串處理函數這裡將Python內置的字符串處理函數歸為以下幾類:去字符函數、填充函數、字母轉換函數、搜索函數、替換函數、分割和連接函數以及判斷函數等。
  • MATLAB數組的常用函數
    3  進行數組運算的常用函數在MATLAB中有一些常用函數,這些函數在日常的編程計算過程中會經常遇到,一般是基本的數學概念在MATLAB
  • 數組的運算及相關函數
    昨天我們學習了數組的訪問,今天一起來看看數組的最後一節內容:數組的運算與相關函數吧!1、數組的四則運算我們可以對數組進行四則運算,一般參與的數組均為相同形狀的,即維數向量相同。除此之外,函數outer()是外積的運算函數,outer(x,y)代表向量x和y的外積,其一般調用格式為outer(X,Y,fun=」*」,...)。
  • PHP數組函數有哪些?
    range()函數定義:range() 函數創建一個包含指定範圍的元素的數組。array_combine函數定義:array_combine() 函數通過合併兩個數組來創建一個新數組,其中的一個數組元素為鍵名,另一個數組的元素為鍵值。
  • Python使用ctypes模塊調用DLL函數之C語言數組與numpy數組傳遞
    模塊調用DLL中的庫函數傳遞數組參數的情況。一般情況下,DLL函數中傳遞C語言類型的數組,在接收到Python語言中時,通常將其轉換為numpy庫裡面的數組類型,這樣做的好處是可以藉助於numpy強大的分析處理功能對數據直接作後續處理。這次通過例子演示下C語言數組到numpy數組之間是怎樣傳遞的。
  • VBA數組函數Split(),將文本內容轉化為數組的實用便捷函數
    這個問題的提出是因為我們在處理一些文字時往往在WORD中,要拷貝到EXCEL中來填充一些資料,多是人名,設備名等,這些往往要求以獨佔一個 單元格的信息,這時該如何把這些人名,設備名放到EXCEL中呢?這就是講文本轉化為數組再填充的問題。
  • php str-ireplace()函數替換字符串/數組中的一些字符
    str_ireplace()函數定義及用法在php中,str_ireplace()函數是使用來替換字符串或數組中的一些字符(不區分大小寫),返回替換後的新字符串或數組,原字符串或數組不變;str_ireplace()函數如果處理的數據是一個數組:該函數將對數組中的每個元素進行查找和替換
  • numpy中數組的遍歷技巧
    在numpy中,當需要循環處理數組中的元素時,能用內置通函數實現的肯定首選通函數,只有當沒有可用的通函數的情況下,再來手動進行遍歷,遍歷的方法有以下幾種
  • python學習之日誌輸出格式logging.basicConfig函數的使用
    python的logging.basicConfig函數 ,使用時粘貼到用例前,就可以打log了。logging模塊是python內置的標準模塊,主要用於輸出運行日誌,可以設置輸出日誌的等級,日誌保存路徑,日誌文件回滾等日誌等級:(從低到高)debug:調試代碼用的,信息比較詳細info:輸出正確的信息,按照正常的代碼運行
  • [基礎] PHP常見數組函數與實例,看這篇足矣
    函數返回一個二維數組$myarr = array_chunk($arr,2)2.創建一個數組,用一個數組的值作為其鍵名,另一個數組的值作為其值:array_combine(keys,values)對比array1和其他數組,返回在array1中但不在其他數組中的值。返回一個數組,但是鍵名不保留2.用回調函數比較數據來計算數組的差集:array_udiff(arr1,arr2,...,value_cpmpare_func)使用用戶自定義的函數進行數據比較,而不是內置的函數。
  • 一起學JAVA——數組和函數
    今天我們高級數據類型——數組以及函數的作用。函數(方法)函數的定義函數就是一段有名字的代碼,可以完成某一特定功能。方法(函數)是java的最小代碼重用單位,方法(函數)是為了重用代碼。如果某個函數在執行的時候需要調用者傳入數據,那麼可以定義參數列表,用於接收數據。如果函數運行之後需要返回給調用者數據,那麼需要指定返回值類型,並且用關鍵字return返回。定義函數的3個必要條件:函數名、參數列表、返回值類型。
  • 使用JavaScript對象數組進行函數式編程
    幸運的是,新的陣列處理運營商map,filter以及reduce廣泛的支持。雖然這些功能的文檔是足夠的,但它通常會顯示非常基本的實現用例。在日常使用中,我們通常需要使用這些方法來處理數據對象的數組,這是文檔中缺乏的場景。另外,這些操作符經常被用功能性語言來看,並為JavaScript帶來了一種新的透視功能,即通過具有功能性觸摸的對象進行迭代。