PHPのフィルター配列

[ 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_BOTHarray_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_filterarray_keysarray_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"
}

おすすめ

転載: blog.csdn.net/weixin_50251467/article/details/131777142