1

次のコードがあります。

if ($login->messages || $content->messages) {
    echo '<div id="message">';
    foreach ($login->messages as $message) {
        echo $message;
    } foreach ($content->messages as $message) {
        echo $message;
    }
    echo '</div>';
}

$login->messages と $content->messages の両方が空の可能性がある配列です。$login->messages が空で $content->messages が空でない場合、問題なく動作し、$content->messages 内のメッセージが表示されます。ログイン メッセージが表示され、メッセージの下に「警告: 無効な引数が foreach() に指定されました」というエラーが表示されます。何が間違っているのかわかりません。

ありがとうございました。

4

4 に答える 4

0

条件付きでチェックしてから、両方の変数ORを使用します。

if ($login->messages || $content->messages)

trueいずれかがデータを含む場合、ステートメントは戻り$messagesます。

で両方の値が空でないことを確認する必要がありますAND

if ($login->messages && $content->messages)

さらに良いのは、型チェックです。

if (is_array($login->messages) && is_array($login->messages))
于 2013-10-07T15:28:15.207 に答える
0

配列が空かどうかを確認する方法はいくつかあります。また、この方法を適用します。つまり、任意の値を配列にキャストすると、その値に関係なく配列が取得されます。たとえば、null、true、false はすべて空の配列になります。

if ($login->messages || $content->messages) {
    echo '<div id="message">';
    foreach ((array)$login->messages as $message) {
        echo $message;
    } foreach ((array)$content->messages as $message) {
        echo $message;
    }
    echo '</div>';
}
于 2013-10-07T15:30:51.110 に答える
0

if ($login->messages || $content->messages) count() > 0 かどうかを確認しないのはなぜですか

于 2013-10-07T15:23:33.533 に答える