PHPの多次元配列で指定した値を見つけることはできますか?

PHPz
リリース: 2023-04-24 16:07:09
オリジナル
697 人が閲覧しました

PHP では、配列は非常に一般的なデータ構造であり、多次元配列は配列の特殊な形式です。多次元配列は配列とみなすことができ、各要素には配列が格納されます。実際の開発では、多次元配列から指定された要素を検索する必要がある場合がありますが、この目的を達成するために、PHP にはいくつかの組み込み関数と演算子が用意されています。

この記事では、PHP で多次元配列内の指定された要素を検索する方法を紹介し、読者が関連知識をよりよく理解して適用できるようにいくつかのコード サンプルを提供します。

1. array_search 関数を使用して、指定された値を検索します。

PHP には、配列内の指定された値を検索するために使用できる組み込み関数 array_search() が用意されています。配列を手動で走査します。この関数は、「緩和比較」方法を使用して検索します。つまり、比較に合同記号 === を使用する代わりに == を使用します。以下は、多次元配列で指定された値を検索するサンプル コードです。

/**
 * 查找多维数组中指定值
 *
 * @param mixed $needle 需要查找的值
 * @param array $haystack 目标多维数组
 * @return mixed 返回找到的键名,如果未找到则返回false
 */
function searchValueInMultidimensionalArray($needle, $haystack)
{
    foreach ($haystack as $key => $value) {
        $currentKey = $key;
        if ($needle == $value || (is_array($value) && searchValueInMultidimensionalArray($needle, $value) !== false)) {
            return $currentKey;
        }
    }
    return false;
}

// 示例用法
$multidimensionalArray = [
    'a' => [
        'b' => 'c',
        'd' => 'e'
    ],
    'f' => [
        'g' => [
            'h' => 'i',
            'j' => 'k'
        ]
    ]
];

$searchValue = 'e';
$result = searchValueInMultidimensionalArray($searchValue, $multidimensionalArray);
echo $result; // 输出a/d
ログイン後にコピー

上記のサンプル コードでは、多次元配列で指定された値を検索するために、searchValueInMulti次元Array() という名前のカスタム関数を定義しました。この関数は再帰的メソッドを使用して走査し、各走査中に array_search() 関数を使用して、現在の配列要素に検索対象の値が含まれているかどうかを検索します。

2. array_filter 関数を使用して、指定されたキー名またはキー値を検索します

特定の要素を検索することに加えて、多次元の要素のリストも検索する必要がある場合があります。指定された条件を満たす配列。 PHP には、特定の条件を満たす要素をフィルタリングするために使用できる組み込み関数 array_filter() が用意されています。また、検索するキー名またはキー値を指定することもできます。

次は、多次元配列で指定されたキー名を検索するサンプル コードです。

// 示例数组
$multidimensionalArray = [
    'a' => [
        'b' => 'c',
        'd' => 'e'
    ],
    'f' => [
        'g' => [
            'h' => 'i',
            'j' => 'k'
        ]
    ]
];

// 查找键名为'b'的元素
$searchKey = 'b';
$filteredArray = array_filter($multidimensionalArray, function ($value, $key) use ($searchKey) {
    return $key == $searchKey;
}, ARRAY_FILTER_USE_KEY);

print_r($filteredArray);
ログイン後にコピー

上記のコードは、次の結果を出力します。上記のコードでは、array_filter () 関数を使用し、コールバック関数の $keys パラメーターを使用して現在の配列要素のキー名を表し、このキー名を使用して指定した検索キー名 ($searchKey) と比較します。 。

さらに、$ureKey パラメーターを使用して指定されたキー値を見つけることもできます。サンプル コードは次のとおりです:

Array
(
    [a] => Array
        (
            [b] => c
        )

)
ログイン後にコピー

上記のコードは次の結果を出力します:

// 示例数组
$multidimensionalArray = [
    'a' => [
        'b' => 'c',
        'd' => 'e'
    ],
    'f' => [
        'g' => [
            'h' => 'i',
            'j' => 'k'
        ]
    ]
];

// 查找键值为'k'的元素
$searchValue = 'k';
$filteredArray = array_filter($multidimensionalArray, function ($value, $key) use ($searchValue) {
    return is_array($value) ? in_array($searchValue, $value) : $value == $searchValue;
});

print_r($filteredArray);
ログイン後にコピー

In 上記のコードでは、 is_array() 関数を使用して、現在の値も配列であるかどうかを判断します。そうであれば、 in_array() 関数を使用して、現在の配列に必要なキー値が含まれているかどうかを判断します。検索されること。そうでない場合は、== を使用して直接比較します。

概要

この記事では、PHP で多次元配列内の指定された要素を検索する方法を紹介し、読者が関連知識をよりよく理解して適用できるようにいくつかのコード サンプルを提供しました。実際の開発では、特定の条件を満たす多次元配列内の要素のリストを見つける必要がある場合は、PHP 組み込み関数 array_filter() を使用してフィルタリングすることができ、指定された要素を見つける必要がある場合は、 array_search() またはカスタム関数を使用して検索を横断します。これらの方法を柔軟に使用することで、さまざまな複雑な PHP アプリケーションをより効率的に開発することができます。

以上がPHPの多次元配列で指定した値を見つけることはできますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート