首頁  >  文章  >  後端開發  >  php 查詢二維數組裡傳回

php 查詢二維數組裡傳回

WBOY
WBOY原創
2023-05-06 15:57:08577瀏覽

在 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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn