ループ内の条件分岐で一致した条件の項目と一致しなかった項目を分けたくて次の様にしています。
しかし、求める表示結果とは異なってしまいます。
ループをネストしているからだとは思うのですが、どうなっているのか理屈がいまいちよく分からず…。
よろしければ求める表示結果を得る方法と、下記コードがどう間違えているのかの解説を頂けないでしょうか…。
尚、どちらも比較しているのは文字列です。
lang
1foreach ( $items as $item ) { // 連想配列を持つオブジェクトが複数格納された配列 2 foreach ( $key as $value ) { // 連想配列 3 if ( $item -> name == $value ) { // name と $value が一致した時は次を表示 4 echo '<li>Success: ' . $item -> name . '</li>'; 5 } else { // 一致しない時は次を表示 6 echo '<li>Fail: ' . $item -> name . '</li>'; 7 } 8 } 9}
求める表示結果
- Success: A
- Success: B
- Fail: C
実際の表示結果
- Success: A
- Fail: A
- Fail: B
- Success: B
- Fail: C
- Fail: C
ちなみに次の様にした時は意図した通りの結果になりますが、複数の値に対応出来ません
lang
1foreach ( $items as $item ) { // 連想配列を持つオブジェクトが複数格納された配列 2 if ( $item -> name == $key[0] ) { // name と $value が一致した時は次を表示 3 echo '<li>Success: ' . $item -> name . '</li>'; 4 } else { // 一致しない時は次を表示 5 echo '<li>Fail: ' . $item -> name . '</li>'; 6 } 7}
表示結果
- Success: A // 最初に一致した項目だけSuccess
- Fail: B
- Fail: C
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/06/01 09:16
2015/06/02 00:19
2015/06/05 05:48