PHP
 Computer >> コンピューター >  >> プログラミング >> PHP

PHPのforeachループとif条件で2つの配列から一致する値を見つける方法

PHPでは、foreachループとif文を組み合わせることで、2つの配列に共通して存在する値(一致する値)を簡単に見つけることができます。本記事では、その基本的な実装方法をサンプルコード付きで解説します。

前提となる配列の準備

まず、比較対象となる次の2つの配列を用意します。

$firstArray = array(10, 20, 30, 40, 50);
$secondArray = array(100, 80, 30, 40, 90);

この2つの配列に共通する値は 3040 です。つまり、期待する出力結果は以下のようになります。

30
40

foreachループとif条件を使った実装例

外側のforeachループで1つ目の配列の各要素を取り出し、内側のforeachループで2つ目の配列の全要素と順番に比較します。値が一致した場合に、if文の中でその値を出力します。

<!DOCTYPE html>
<html>
<body>
<?php
$firstArray = array(10, 20, 30, 40, 50);
$secondArray = array(100, 80, 30, 40, 90);

foreach ($firstArray as $f) {
    foreach ($secondArray as $s) {
        if ($f == $s) {
            echo "一致する値は= " . $f . "<br>";
        }
    }
}
?>
</body>
</html>

コードのポイント

  • 二重ループ構造: 外側のループで$firstArrayの要素を1つずつ取得し、内側のループで$secondArrayのすべての要素と照合します。
  • 緩い比較(==): 「==」は型の違いを許容して比較します。厳密に型まで比較したい場合は「===」を使用してください。
  • 出力処理: 一致が確認できた時点で、echoにより結果を画面に出力します。

実行結果

上記のコードを実行すると、次の出力が得られます。

一致する値は= 30
一致する値は= 40

補足:array_intersect()を使ったより効率的な方法

二重ループはシンプルで分かりやすい反面、要素数が多い場合は処理速度が遅くなります。PHPには標準で用意されている array_intersect() 関数を使うと、1行で同じ結果を得られます。

<?php
$result = array_intersect($firstArray, $secondArray);
print_r($result);
// 出力: Array ( [2] => 30 [3] => 40 )
?>

このように、学習目的やロジックの理解にはforeachループが有効ですが、実務ではarray_intersect()のような組み込み関数を活用すると、コードが簡潔になりパフォーマンスも向上します。

  1. PHPで元のキーを保持したまま2つの配列をマージする方法

    PHPで2つの配列を結合(マージ)する際に、元のキーを保持したい場合は、union演算子「+」を使用します。array_merge()関数とは異なり、「+」演算子は既存の文字列キーや数値キーをそのまま維持しながら配列を結合できるのが特徴です。例1:文字列キーを持つ配列のマージまずは、文字列キーを持つ2つの配列を「+」演算子で結合する基本的な例を見てみましょう。<?php    $arr1 = array( p=>150, q=>100, r=>120, s=>110);    $arr2 = array(t=>115,

  2. C#で1つのforeach文を使って2つのリストや配列を同時に反復処理する方法

    C#では、LINQのZip()メソッドを活用することで、2つのコレクション(リストや配列)を1つのforeach文で同時に反復処理できます。本記事では、その具体的な手順をサンプルコード付きで解説します。 1. 反復処理する2つの配列を用意する まず、処理対象となる2つの配列を定義します。ここでは、int型の数値を持つ配列と、string型の文字列を持つ配列をそれぞれ用意します。 var val = new [] { 20, 40, 60}; var str = new [] { "ele1", "ele2", "ele3"}; 2.