PHPで配列や連想配列をforeachでループしながらキーや値を取得する方法です。
この記事を読んでいる方は配列の中身を全てループして、1件1件なにかしらの処理をしたいのですよね?
古い記憶をたどると昔はforeachとか無かったと思うんです。Javaには無かっただけかな?
配列は要素数を取得して、for文で要素の数だけループするような書き方でした。
foreachを使えば自動的に全てループしてくれてキーと値も取得できます。
これを知ったときは感動でした!笑
今では一般的なんかな?
こんな便利なforeachの使い方についてご紹介します。
PHPの連想配列のキーと値をforeachでループしながら取得する方法
echo $値;
}
foreach は上記のように書きます。
$配列にループする配列を指定し、中身の値が$値に定義した変数に1つずつセットされます。
上記のコードのように書けば、全ての値が echo により出力されます。
echo $キー;
echo $値;
}
キーも取得する場合は上記のように書きます。
これで配列に含まれる全てのキーと値がループされます。
連想配列の場合は$キーに文字列のキーがセットされます。
通常の配列の場合はインデックス値がセットされます。
簡単ですね!便利すぎて泣けてきます。
多次元配列の場合
多次元配列の場合はどうなるでしょうか。
実際にコードを書いて説明します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
$ary = array( "japan" => array("東京", "大阪", "北海道", "沖縄"), "usa" => array("ワシントン", "ニューヨーク", "ロサンゼルス"), "chile" => null ); foreach ($ary as $key => $val) { echo "国は、{$key}<br />"; if (is_array($val)) { foreach ($val as $val2) { echo "町は、{$val2}<br />"; } } else { echo "町無し"; } } |
多次元配列の場合は、foreach の中にまたforeachを書くようにして書きます。
このとき注意してほしいのが、2つ目の foreach の as の次に書く値を受け取る変数の変数名が、1つ目と重複しないことです。
これはよくあるミスで、変数名が重複すれば当然前の変数に上書きされてしまいます。
そうなるとバグの元になってしまうのは容易に想像ができますね。
is_array() は配列かどうかを判定する関数です。
1つ目のループが配列ならば2つ目のループに入るようにしています。
ちなみに上記のものをWEBページに出力すると以下のようになります。
1 2 3 4 5 6 7 8 9 10 11 |
国は、japan 町は、東京 町は、大阪 町は、北海道 町は、沖縄 国は、usa 町は、ワシントン 町は、ニューヨーク 町は、ロサンゼルス 国は、chile 町無し |
色々なところに旅行したいですね(笑)
まとめ
配列のキーと値を全てループして取得するには foreach を使う。
多次元配列のときは、foreachの中にforeachを書く。
変数名の重複に気をつける。
コメントを残す