[ PHP でarray_intersect_keys
と を使用してarray_flip
配列をフィルタリングする]
array_intersect_keys
は、キーを使用して配列の交差を計算する PHP 組み込み関数です。2 つの配列を として受け入れます参数
。
最初の配列は主キーを持つ配列である必要があります。2 番目の配列には、比較するキーが含まれている必要があります。
array_flip
組み込みの PHP 関数です。すべてのキーを配列内の関連する値と交換します。
2 つを組み合わせると、配列をフィルタリングできます。まず、主キーを含む配列を作成します。
2 番目の配列には、チェックするキーが含まれます。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
関数に渡すことができます。
このアプローチの利点の 1 つは、キーに対して実行できることです任意测试
。
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
フィルタリングする配列には、文字列で定義されたキーが必要です。さらに、各文字列の長さは少なくとも 3 文字である必要があります。
最初のステップとして、 および 関数を組み合わせて使用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"
}