サポート » 使い方全般 » foreach 繰り返す場合と繰り返さない場合があるときはどう記述すれば?

  • 解決済 addjamy

    (@addjamy)


    カスタムフィールドを使っています。

    <?php
    $list = get_post_custom();
    $values = $list[$key];
    foreach ($values as $value) {
    echo $value;
    }
    ?>

    ↑で書いたときに、該当項目が必ず二つ以上ないとエラーになってしまいます。
    該当項目が一つの場合もあるので、その時はループさせないように(?)書くにはどう書けばよいのでしょうか?(T_T)

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • トピック投稿者 addjamy

    (@addjamy)

    ちなみにこの項目が0この時は、「wait」見たいな画像を出したいのですが、これも併せてわかりません…。どなたかご教授くださいませんでしょうか。(T_T)

    wordpressってよりはphpの書き方の方になりますが・・・
    foreachというのは配列の数だけ繰り返すということですので
    $list[$key]; が1つの時には配列で返ってこないからエラーが出るということだと思います。
    配列かどうかの判断はis_array()で判定させます。
    また、この項目が0の時に何が入ってくるのかで書き方が変わる場合がありますが
    is_empty()で判定させてやれば大抵は大丈夫だと思います。

    (それぞれの関数 is_arrayやis_emptyの使い方は「phpリファレンス」で検索すればたくさん出てきます。)
    以上を踏まえた上で
    if文で

    if(空か?){
     0の場合の処理
    }elseif(配列か?){
     複数ある場合の処理(foreach文)
    }else{
     1つの場合の処理
    }

    という順に判定させてやれば希望の処理に出来るかと思います。

    foreach ( (array) $values as $value) {
    で OK◎

    トピック投稿者 addjamy

    (@addjamy)

    jdbbさん
    PHPが初心者なもので書き方がわかりませんでした。。
    ご指導ありがとうございました。

    kzさん
    (array) をいれればいいのですね!
    具体的なソースをありがとうございました!

    あと、0個の場合どうしたらいいのか…
    strlen 0 のとき…見たいに書くのでしょうか…

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • トピック「foreach 繰り返す場合と繰り返さない場合があるときはどう記述すれば?」には新たに返信することはできません。