ホームページ >バックエンド開発 >PHPチュートリアル >PHP 連想配列内で検索する方法 – 簡単なヒント

PHP 連想配列内で検索する方法 – 簡単なヒント

WBOY
WBOYオリジナル
2024-08-15 18:32:37826ブラウズ

連想配列は PHP の基本的なデータ構造であり、開発者はキーと値のペアを保存できます。これらは多用途であり、構造化データを表すためによく使用されます。 PHP 連想配列内の特定の要素を検索するのは一般的なタスクです。ただし、PHP で使用できるほとんどのネイティブ関数は、単純な配列でもうまく機能します。

このため、連想配列で同じことを実行できる関数の組み合わせを見つける必要があることがよくあります。おそらくメモリ不足エラーは発生しませんか?.

このチュートリアルでは、PHP 連想配列内の値を検索するためのさまざまな方法とテクニックを検討します。

連想配列内のキーの検索

array_key_exists() 関数は、特定のキーが連想配列に存在するかどうかをチェックします。キーが見つかった場合は true を返し、それ以外の場合は false を返します。

$fruits = [
    'apple' => 'red',
    'banana' => 'yellow',
];

if (array_key_exists('banana', $fruits)) {
    echo "The key 'banana' exists in the array.";
} else {
    echo "The key 'banana' does not exist in the array.";
}

連想配列の値による検索

array_search() と in_array() の使用

array_search() 関数は、連想配列内の値を検索し、見つかった場合は対応するキーを返し、見つからない場合は false を返します。

$colors = [
    'apple' => 'red',
    'banana' => 'yellow',
];

echo array_search('yellow', $colors); // Print "banana"

より複雑なデータを含む配列を値として使用することもできます:

$colors = [
    'apple' => ['red'],
    'banana' => 'yellow',
];

echo array_search(['red'], $colors); // Print "apple"

この場合、厳密比較モードを使用することをお勧めします。 3 番目のブール値パラメータを array_search:
に渡してリクエストできます。

echo array_search(['red'], $colors, true);

array_search() に似ているのは、項目のキーの代わりにブール値フラグを返す in_array 関数です。

/*
 * It also supports strict mode comparison, useful for working with structured data as a value.
 */
echo in_array(['red'], $colors, true); // Return "true"

foreach ループの使用

foreach ループを使用して連想配列を反復処理し、特定の値を手動で検索できます。これは、ループが配列の同じスコープ内に存在するため、ループ内のすべてのデータにアクセスできるため、複雑な比較や操作を行う必要がある場合に便利です。

$targetValue = 'yellow';

foreach ($colors as $key => $value) {
    if ($value === $targetValue) {
        echo "The value {$targetValue} is associated with the key {$key}.";
        break; // Optional: Stop searching after finding the occurrence.
    }
}

array_filter() の使用

array_filter() 関数を使用すると、配列をフィルタリングし、テスト コールバックを渡す要素のみを返すことができます。

$colors = [
    'apple' => 'red',
    'banana' => 'yellow',
];

$filteredArray = array_filter($colors, function ($value) {
    return $value === 'red';
});

/*
 * It contains just one element: ['apple' => 'red']
 * ‘banana’ was filtered out.
 */
var_dump($filteredArray);

PHP 配列関数と foreach の間のパフォーマンス ベンチマーク

パフォーマンスが懸念事項の 1 つである場合は、記事のこのセクションが間違いなく興味深いものになるでしょう。

array_map と foreach ループを使用して、200,000 項目の配列に対して単純な操作を実行するスクリプトを作成しました。Inspector パッケージを使用して、2 つのステートメントのパフォーマンスをトレースしました。このサンドボックスでコードを試すことができます: https://phpsandbox.io/e/x/5titt

$data = range(1, 200000);

$inspector->addSegment(function () use ($data) {
    array_map(fn($item) => $item * 3, $data);
}, 'array_map');

$data = range(1, 200000);

$inspector->addSegment(function () use ($data) {
    foreach ($data as $item) {
        $data[$item] = $item * 3;
    }
}, 'foreach');

何十回も実行すると、foreach は array_map よりも一貫して約 10% 優れていることがわかります。

How to Search in a PHP Associative Array – Fast tips

しかし、この結果はコンテキスト環境に応じて大きく変わる可能性があります。上にリンクされたサンドボックスでスニペットを実行すると、foreach が array_map よりも 10 倍効率的であることがわかります。スクリプトをローカル環境にコピーして、自分用のベンチマークを作成できます。

とにかく、foreach が一般に array_map よりも効率的である理由は、コールバックの使用を意味しないからです。同じスコープ内で配列を直接使用するよりも、関数を呼び出す方がオーバーヘッドが大きくなります。このため、array_map は反復ごとにもう少し多くの時間を浪費します。ただし、これは大規模なデータセットでのみ表示されます。配列が小さいほど、ギャップは小さくなります。

検査官は初めてですか?アプリケーションを無料で監視する

Inspector は、ソフトウェア開発者向けに特別に設計されたコード実行監視ツールです。サーバー レベルで何もインストールする必要はありません。composer パッケージ をインストールするだけで準備完了です。

他の複雑なオールインワン プラットフォームとは異なり、Inspector は非常に簡単で、PHP に優しいです。 Laravel または Symfony パッケージを試すことができます。

効果的な自動化、深い洞察、アラートや通知をメッセージング環境に転送する機能をお探しの場合は、Inspector を無料でお試しください。アカウントを登録してください。

または、Web サイトで詳細をご覧ください: https://inspector.dev

How to Search in a PHP Associative Array – Fast tips

以上がPHP 連想配列内で検索する方法 – 簡単なヒントの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。