首頁 >後端開發 >PHP問題 >php 查詢多維數組

php 查詢多維數組

WBOY
WBOY原創
2023-05-28 15:31:411018瀏覽

PHP是一門強大的程式語言,經常被用來開發Web應用程式。在透過PHP開發Web應用程式時,我們常常需要處理多維數組。多維數組是指一個數組中包含了另一個數組。這些數組可以嵌套多層,從而構成一個複雜的結構。如何查詢這種多維數組成為了開發者們面臨的一個問題。

PHP提供了一些內建函數來處理多維數組,包括array_search()、array_key_exists()、in_array()、array_walk_recursive()等等。本文將介紹其中幾個函數,幫助大家輕鬆查詢多維數組。

一、array_search()函數

array_search()函數用於在陣列中尋找指定的元素,並傳回其鍵名。如果數組中存在多個匹配項,則傳回第一個匹配項的鍵名。如果沒有符合項,則傳回false。

這裡是array_search()函數的語法:

array_search(search_value, array, strict)

#其中,search_value是要找的值,array是要搜尋的陣列,strict是一個可選的布林值,用於指定搜尋時是否需要類型匹配。如果設為true,則傳回與search_value類型相同且值相等的元素的鍵名,如果設定為false或不設置,則只傳回值相等的元素的鍵名。

下面是一個範例程式碼:

$students = [
    ['name' => '张三', 'age' => 20, 'gender' => '男'],
    ['name' => '李四', 'age' => 18, 'gender' => '女'],
    ['name' => '王五', 'age' => 22, 'gender' => '男']
];

// 查询名为'李四'的学生的索引
$index = array_search('李四', array_column($students, 'name'));
echo "李四的索引是:" . $index; 

在這個範例中,我們使用了array_search()和array_column()函數。 array_column()函數用來傳回一個包含指定列的值的新陣列。在這個例子中,我們傳回了所有學生的姓名列,然後在此數組中查詢名為'李四'的元素的索引,並將其列印出來。

二、array_key_exists()函數

array_key_exists()函數用來判斷一個指定的鍵名是否存在於陣列中。如果存在,則傳回true,否則傳回false。這個函數的語法如下:

array_key_exists(key, array)

其中,key是要找的鍵名,array是要搜尋的陣列。

下面是一個範例程式碼:

$students = [
    '张三' => ['age' => 20, 'gender' => '男'],
    '李四' => ['age' => 18, 'gender' => '女'],
    '王五' => ['age' => 22, 'gender' => '男']
];

// 判断'李四'是否存在
if (array_key_exists('李四', $students)) {
    echo "存在名为'李四'的学生";
} else {
    echo "不存在名为'李四'的学生";
}

這個範例中,我們使用了array_key_exists()函數來判斷一個鍵名是否存在於陣列中。如果輸入的鍵名'李四'存在於數組中,則返回“存在名為'李四'的學生”,否則返回“不存在名為'李四'的學生”。

三、in_array()函數

in_array()函數用來判斷一個指定的值是否存在於陣列中。如果存在,則傳回true,否則傳回false。這個函數的語法如下:

in_array(needle, haystack, strict)

其中,needle是要尋找的值,haystack是要搜尋的數組,strict是一個可選的布林值,用於指定搜尋時是否需要類型匹配。如果設為true,則傳回與needle類型相同且值相等的元素,如果設定為false或不設置,則只傳回值相等的元素。

下面是一個範例程式碼:

$fruits = ['apple', 'banana', 'orange'];

// 判断是否存在'banana'
if (in_array('banana', $fruits)) {
    echo "存在'banana'这个水果";
} else {
    echo "不存在'banana'这个水果";
}

這個範例中,我們使用了in_array()函數來判斷一個值是否存在於陣列中。如果輸入的值'banana'存在於數組中,則返回“存在'banana'這個水果”,否則返回“不存在'banana'這個水果”。

四、array_walk_recursive()函數

array_walk_recursive()函數用於遞歸遍歷多維數組並執行指定的回呼函數。這個函數的語法如下:

array_walk_recursive(array, callback, userdata)

其中,array是要遞歸遍歷的多維數組,callback是要執行的回呼函數,userdata是傳遞給回呼函數的可選資料。

下面是一個範例程式碼:

$students = [
    ['name' => '张三', 'grades' => ['math' => 80, 'english' => 85]],
    ['name' => '李四', 'grades' => ['math' => 90, 'english' => 95]],
    ['name' => '王五', 'grades' => ['math' => 85, 'english' => 80]]
];

// 计算每个学生的平均分
function calculate_average(&$value, $key, $userdata) {
    $sum = array_sum($value['grades']);
    $value['average'] = round($sum / count($value['grades']), 2);
}

array_walk_recursive($students, 'calculate_average');

print_r($students); 

在這個範例中,我們使用了array_walk_recursive()函數來遍歷一個包含多個學生姓名和成績的二維數組,並計算每個學生的平均分數。在回呼函數calculate_average()中,我們使用了array_sum()函數計算所有科目的總分,並除以科目數計算平均分數。最終,我們將計算結果新增到每個學生的陣列中,並使用print_r()函數列印整個陣列。

總結

查詢多維數組是PHP開發的一個常見需求。本文介紹了幾個內建函數,包括array_search()、array_key_exists()、in_array()、array_walk_recursive()等等。這些函數可以幫助我們輕鬆查詢和處理多維數組。希望讀者們對此有所收穫。

以上是php 查詢多維數組的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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