PHPのforeachループとif条件で2つの配列から一致する値を見つける方法
PHPでは、foreachループとif文を組み合わせることで、2つの配列に共通して存在する値(一致する値)を簡単に見つけることができます。本記事では、その基本的な実装方法をサンプルコード付きで解説します。
前提となる配列の準備
まず、比較対象となる次の2つの配列を用意します。
$firstArray = array(10, 20, 30, 40, 50); $secondArray = array(100, 80, 30, 40, 90);
この2つの配列に共通する値は 30 と 40 です。つまり、期待する出力結果は以下のようになります。
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()のような組み込み関数を活用すると、コードが簡潔になりパフォーマンスも向上します。
-
PHPで元のキーを保持したまま2つの配列をマージする方法
PHPで2つの配列を結合(マージ)する際に、元のキーを保持したい場合は、union演算子「+」を使用します。array_merge()関数とは異なり、「+」演算子は既存の文字列キーや数値キーをそのまま維持しながら配列を結合できるのが特徴です。例1:文字列キーを持つ配列のマージまずは、文字列キーを持つ2つの配列を「+」演算子で結合する基本的な例を見てみましょう。<?php $arr1 = array( p=>150, q=>100, r=>120, s=>110); $arr2 = array(t=>115,
-
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.