3

そのため、チェックボックスフィールドを使用しており、以下のコードを使用してその値を確認し、それに応じて出力します。とにかく、フィールドのチェックボックスに値がない場合、つまりすべてのチェックボックスがオフになっている場合、エラーが発生します。

警告:in_array()は、パラメーター2が配列であると想定しています。ブール値は/filepath.phpの647行目に示されています。

    <?php if (in_array( 'Subbed', get_field('episode_sdversion'))) { ?>
            <a href="<?php echo $episode_permalink; ?>#subbed">Subbed</a>
    <?php } else { 
            echo '--';
    } ?>

したがって、基本的に、このコードを使用して、すべての値がオフになっている場合、「Subbed」値もオフになっていることを自動的に意味するので、単に表示する必要がありますecho '--';echo '--';したがって、すべての値がオフになっているときにこれを実行するにはどうすればよいですか。それで、それはそのエラーを思い付くべきではありませんか?

4

3 に答える 3

2

関数が何をするのかわかりません。おそらくフレームワークの一部か何かですが、チェックボックスが空の場合get_field()の値を返すと思います。$_REQUEST['episode_sdversion']FALSE

この場合、私があなたの質問を正しく理解していれば、最初に、get_field()それ以外のものが返されているかどうかを確認する簡単なチェックでFALSE十分です。

<?php if (get_field('episode_sdversion') && in_array('Subbed', get_field('episode_sdversion'))) { ?>
        <a href="<?php echo $episode_permalink; ?>#subbed">Subbed</a>
<?php } else { 
        echo '--';
} ?>
于 2013-02-24T22:31:30.097 に答える
2

ボックスがチェックされていない場合、get_fieldが配列ではなくfalseを返すため、エラーが発生します。&&演算子は短絡です。つまり、最初の部分がfalseと評価された場合、2番目の部分は実行されません。したがって、最初の行(in_array(...)の場合)を次のように置き換えることで、エラーを回避できます。

if(get_field('episode_sdversion) && in_array('Subbed', get_field('episode_sdversion')))
于 2013-02-24T22:36:29.667 に答える
1

そのコードを変更するか、get_fieldの戻り値を変更する必要があります。これを行う方法は、すべての場合にarray()を宣言してから、投稿されたすべてのチェックボックスを追加することです。これにより、常に配列がin_array関数の2番目のパラメーターとして渡されます。

于 2013-02-24T22:25:26.533 に答える