簡體   English   中英

PHP發生了什么-我聽不懂?

[英]What is going here PHP - I don't understand?

我有一個具有所有不同種類值的可組合數組,但是下面的內容將找到所有以Study結尾的數組鍵並檢查其布爾值,但是我不明白的是它是如何工作的,無論如何都在乎解釋一個一步一步的解釋嗎?

$study = array_filter(array_intersect_key($user, array_flip(preg_grep('/Study$/', array_keys($user)))));

if ($study) {
     ......
}

php如何對以Study結尾的鍵進行排序?

還有沒有更好的方法可以做到這一點?

帶有嵌套函數調用的表達式是從內部到最外面的括號求值的。 執行順序如下:

  1. array_keys($user) -將數組變成鍵列表
  2. preg_grep('/Study$/', -提取特定的鍵
  3. array_flip( -將鍵列表變回關聯的鍵數組
  4. array_intersect_key($user, -使用過濾后的關聯鍵列表將原始數組縮小為所需的子集
  5. array_filter( -刪除非true條目(NULL和false)
  6. $study = -分配結果

array_keys($ user)返回鍵作為值,而preg_grep('/ Study $ /'過濾器列出僅返回那些以字母“ Study”結尾($是結束錨點)的值,從而為我們提供了一組過濾后的鍵值。

然后,array_flip反轉過濾后的數組,以便這些值成為新數組中的鍵,該數組僅包含具有過濾后的鍵集的條目。

然后,通過array_intersect_key()函數將該鍵的子集與原始數組鍵進行匹配,以便僅返回原始數組中具有與過濾后的數組中的鍵匹配的鍵的項。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM