PHPは配列内にあるかどうかを判断します

王林
リリース: 2023-05-07 16:05:08
オリジナル
494 人が閲覧しました

PHP では、配列内に値が存在するかどうかを判断するのは非常に一般的な操作です。通常は in_array 関数を使用して判断できます。しかし、実際の開発プロセスでは、in_array 関数は配列全体を走査する必要があるため、効率が最適ではなく、配列が大きくなると時間計算量が増加し、プログラムの実行が遅くなります。したがって、この問題を解決するためのより効率的な方法を見つける必要があります。

この記事では、配列に値が存在するかどうかを確認するための 2 つの効率的な方法を紹介します。

方法 1: array_key_exists 関数を使用する

array_key_exists 関数は、配列内にキーが存在するかどうかを確認できるため、検索する必要がある値を配列のキー値として使用できます。非常に速い検索速度を実現します。以下は、array_key_exists 関数を使用して、配列内に値が存在するかどうかを判断するコード例です。

$my_array = array('apple', 'banana', 'orange', 'kiwi');

if (array_key_exists('banana', array_flip($my_array))) {
    echo 'The value exists in the array';
} else {
    echo 'The value does not exist in the array';
}
ログイン後にコピー

コード分析:

  1. array_flip 関数を使用して、配列内の値を変更します。元の配列をキー値に変換します。元のキー値が値になります。これが行われるのは、array_key_exists 関数は配列内にキーが存在するかどうかのみをチェックでき、配列内に値が存在するかどうかはチェックできないためです。
  2. 検索したい値を array_key_exists 関数のパラメータとして渡します。
  3. true が返された場合は、値が配列内に存在することを意味し、false が返された場合は、値が存在しないことを意味します。

array_key_exists 関数を使用する利点は高速であることですが、欠点はキーが配列内に存在するかどうかしか確認できないため、値が一致する状況にのみ適していることです。それ自体が配列内のキー値であることを確認する必要があります。

方法 2: isset 関数を使用する

isset 関数は、変数が宣言され、値が割り当てられているかどうかを確認するために PHP で使用されます。値が配列内に存在するかどうかを確認する場合、 isset 関数を使用して、指定されたキー値が配列内に存在するかどうかを判断できます。たとえば、次のサンプル コード:

$my_array = array('apple', 'banana', 'orange', 'kiwi');

if (isset($my_array[array_search('banana', $my_array)])) {
    echo 'The value exists in the array';
} else {
    echo 'The value does not exist in the array';
}
ログイン後にコピー

コード分析:

  1. array_search 関数を使用して、配列内で検索する値に対応するキー値を検索します。
  2. 配列とキーの値をパラメーターとして isset 関数に渡します。
  3. true が返された場合は、値が配列内に存在することを意味し、false が返された場合は、値が存在しないことを意味します。

isset 関数を使用する利点は、値が配列内に存在するかどうかを確認できることです。欠点は、比較的遅いことです。配列サイズが大きい場合、パフォーマンスのボトルネックが発生します。 。

結論

実際の開発プロセスでは、状況に応じて適切な方法を選択する必要があります。チェックする必要がある値がすでに配列内のキー値である場合は、array_key_exists 関数を使用できます。チェックする必要がある値がキー値ではない場合は、isset 関数を使用できます。ただし、どの方法を使用する場合でも、過剰な配列サイズによる非効率なプログラム操作を避けるために、パフォーマンスの問題に注意を払う必要があります。

以上がPHPは配列内にあるかどうかを判断しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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