在 PHP 中過濾陣列
-
在 PHP 中使用
array_intersect_keys
和array_flip
過濾陣列 -
在 PHP 中使用
array_filter
和ARRAY_FILTER_USE_KEY
過濾陣列 -
在 PHP 中使用
array_filter
和ARRAY_FILTER_USE_BOTH
過濾陣列 - PHP 中基於鍵長度過濾陣列
本教程將教授你可用於在 PHP 中過濾陣列的不同方法。這些方法將使用內建的 PHP 函式,如 array_intersect_key
、array_flip
、array_filter
和 array_keys
。
在 PHP 中使用 array_intersect_keys
和 array_flip
過濾陣列
array_intersect_keys
是一個 PHP 內建函式,它使用鍵來計算陣列的交集。它接受兩個陣列作為引數
。
第一個陣列應該是一個帶有主鍵的陣列。而第二個陣列應該包含你將與之比較的鍵。
array_flip
是一個內建的 PHP 函式。它將所有鍵與它們在陣列中的關聯值交換。
結合這兩者,你可以過濾陣列。首先,你建立一個包含主鍵的陣列。
第二個陣列將包含你要檢查的鍵。以下程式碼塊顯示瞭如何使用 array_intersect_keys
和 array_flip
過濾陣列。
樣本:
<?php
$array_master = array (
"author_name" => "John",
"discipline" => "Computer Science",
"Date_of_Birth" => "01/01/1970",
"Programming Languages" => "PHP, Objective-C"
);
$allowed_keys = array(
"author_name",
"discipline"
);
echo "<pre>";
var_dump(array_intersect_key($array_master, array_flip($allowed_keys)));
echo "</pre>";
?>
輸出:
array(2) {
["author_name"]=>
string(4) "John"
["discipline"]=>
string(16) "Computer Science"
}
在 PHP 中使用 array_filter
和 ARRAY_FILTER_USE_KEY
過濾陣列
array_filter
是另一個內建函式。它使用回撥函式來過濾陣列的元素。
array_filter
函式接受類似 ARRAY_FILTER_USE_KEY
的標誌。此標誌將允許你通過其鍵過濾陣列。
下面的程式碼塊將提供有關如何將 array_filter()
與 ARRAY_FILTER_USE_KEY
一起使用的詳細資訊。
樣本:
<?php
$array_master = array (
"author_name" => "John",
"discipline" => "Computer Science",
"Date_of_Birth" => "01/01/1970",
"Programming Languages" => "PHP, Objective-C"
);
$allowed_keys = array(
"author_name",
"discipline"
);
$filtered = array_filter(
$array_master,
function ($key) use ($allowed_keys) {
return in_array($key, $allowed_keys);
},
ARRAY_FILTER_USE_KEY
);
echo "<pre>";
echo var_dump($filtered);
echo "</pre>";
?>
輸出:
array(2) {
["author_name"]=>
string(4) "John"
["discipline"]=>
string(16) "Computer Science"
}
從 PHP 7.4 開始,你可以使用箭頭函式重寫之前的程式碼:
<?php
$array_master = array (
"author_name" => "John",
"discipline" => "Computer Science",
"Date_of_Birth" => "01/01/1970",
"Programming Languages" => "PHP, Objective-C"
);
$allowed_keys = array(
"author_name",
"discipline"
);
// Here we are using an arrow
// function in array_filter
$filtered = array_filter(
$array_master,
fn ($key) => in_array($key, $allowed_keys),
ARRAY_FILTER_USE_KEY
);
echo "<pre>";
echo var_dump($filtered);
echo "</pre>";
輸出:
array(2) {
["author_name"]=>
string(4) "John"
["discipline"]=>
string(16) "Computer Science"
}
在 PHP 中使用 array_filter
和 ARRAY_FILTER_USE_BOTH
過濾陣列
ARRAY_FILTER_USE_BOTH
是一個可以與 array_filter()
函式一起使用的標誌。有了它,你可以將值和鍵傳遞給你的 callback
函式。
這種方法的優點之一是能夠針對鍵執行任意測試
。
下一個程式碼塊展示瞭如何使用 ARRAY_FILTER_USE_BOTH
和 array_filter()
。
樣本:
<?php
$array_master = array (
"author_name" => "John",
"discipline" => "Computer Science",
"Date_of_Birth" => "01/01/1970",
"Programming Languages" => "PHP, Objective-C"
);
$allowed_keys = array(
"author_name" => true,
"discipline" => true
);
$filtered = array_filter(
$array_master,
fn ($val, $key) => isset($allowed_keys[$key]) && ($allowed_keys[$key] === true || $allowed_keys[$key] === $val) ,
ARRAY_FILTER_USE_BOTH
);
echo "<pre>";
echo var_dump($filtered);
echo "</pre>";
?>
輸出:
array(2) {
["author_name"]=>
string(4) "John"
["discipline"]=>
string(16) "Computer Science"
}
PHP 中基於鍵長度過濾陣列
你可以根據其鍵長度過濾陣列。你可以使用這些 PHP 內建函式 array_filter
、array_keys
、array_intersect_key
、array_flip
和 strlen
來做到這一點。
你要過濾的陣列應在字串中定義其鍵。此外,每個字串應至少包含三個字元長。
作為第一步,使用 array_filter()
、array_flip
和 strlen
函式的組合。使用這些函式返回符合你的條件的陣列。
之後,在結果陣列上使用 array_intersect_key
和 array_flip
。
<?php
$array_master = array (
"author_name" => "John",
"discipline" => "Computer Science",
"Date_of_Birth" => "01/01/1970",
"Programming Languages" => "PHP, Objective-C"
);
$filter = array_filter(
array_keys($array_master), function ($key) {
return strlen($key) <= 10;
});
$flip_array = array_intersect_key($array_master, array_flip($filter));
echo "<pre>";
echo var_dump($flip_array);
echo "</pre>";
?>
輸出:
array(1) {
["discipline"]=>
string(16) "Computer Science"
}
Habdul Hazeez is a technical writer with amazing research skills. He can connect the dots, and make sense of data that are scattered across different media.
LinkedIn