在 PHP 中,我們可以使用多種方式來查詢陣列裡的元素,例如使用 in_array() 函數,使用 array_search() 函數等。但當我們需要在一個二維數組中查詢元素時,這些方法就顯得不太有效了。本文將介紹如何在 PHP 中查詢二維數組並傳回所需的元素。
首先,讓我們來看一個簡單的二維數組:
$students = array( array('name' => 'Tom', 'age' => 20, 'score' => 90), array('name' => 'Jack', 'age' => 22, 'score' => 85), array('name' => 'Mary', 'age' => 21, 'score' => 92), );
假設我們想要查詢某個學生的成績,我們可以使用foreach 迴圈遍歷數組,並使用條件語句來判斷是否是我們需要的學生,例如:
$wantedStudent = 'Jack'; foreach ($students as $student) { if ($student['name'] == $wantedStudent) { echo $wantedStudent . '的成绩是:' . $student['score']; break; } }
以上程式碼將輸出:
Jack的成绩是:85
但是,如果我們需要查詢的學生很多,這種方法將變得非常繁瑣。因此,我們可以將其封裝成一個函數來使用:
function searchArray($array, $key, $value) { foreach ($array as $item) { if ($item[$key] == $value) { return $item; } } return null; }
以上函數接收三個參數:數組,要查詢的鍵名和鍵值。它將遍歷數組,如果找到匹配項,就傳回該項,否則傳回 null。
我們可以像這樣使用該函數:
$wantedStudent = 'Mary'; $student = searchArray($students, 'name', $wantedStudent); if ($student) { echo $wantedStudent . '的成绩是:' . $student['score']; }
以上程式碼和先前的範例是等效的,將輸出:
Mary的成绩是:92
但是,當陣列非常大時,遍歷整個數組將影響效能。因此,我們可以使用數組函數 array_filter(),該函數可以接收一個數組和一個回調函數,並傳回一個新數組,其中包含符合回調函數條件的數組元素。
以下是使用array_filter() 來查詢二維數組的範例:
function searchArray($array, $key, $value) { $filtered = array_filter($array, function($item) use ($key, $value) { return $item[$key] == $value; }); return count($filtered) ? array_values($filtered)[0] : null; }
以上函數和之前的函數的功能是一樣的,但是它使用了array_filter() 來過濾符合條件的數組元素,從而提高了效能。
至此,我們已經學會了在 PHP 中查詢二維陣列並傳回所需的元素的方法。建議在上百條甚至更多資料的情況下使用 array_filter() 和匿名函數的方式實作陣列元素查詢。
以上是php 查詢二維數組裡傳回的詳細內容。更多資訊請關注PHP中文網其他相關文章!