1

phpの配列内でifelseステートメントを使用できないとは思いもしませんでした。私はstackoverflowを検索し、短縮バージョンが実際に正常に機能するはずであることを発見しました。

私はそれを試しましたが、それでもエラーがあり、ページがロードされません、私のコード:

query_posts (array(

                                ($prefooter_order_logic == 'xviews' ? "'v_sortby' => 'views', 'v_orderby' => 'desc'," : "")

                                'order' => 'DESC',
                                'orderby' => $prefooter_order_logic,

                                'posts_per_page' => '10',
                                'post_type' => 'post',
                                'category_name' => $prefooter_category_select

                            ));

これは私にエラーを与えません:

しかし、それは機能しません...

($prefooter_order_logic == 'xviews' ? "

                                    'v_sortby' => 'views',
                                    'v_orderby' => 'desc',

                                    " : "

                                    'order' => 'DESC',
                                    'orderby' => $prefooter_order_logic,

                                    "),

私は遊ぶのをやめて、それを最も簡単な方法で行うことにしました:

ところで、これがそれを行うための最良の方法であるかどうかについて何か考えはありますか?か否か?

                if ($prefooter_order_logic == 'xviews') {

                    query_posts (array(
                        'v_sortby' => 'views',
                        'v_orderby' => 'desc',
                        'posts_per_page' => '10',
                        'post_type' => 'post',
                        'category_name' => $prefooter_category_select
                    ));

                } else {

                    query_posts (array(
                        'order' => 'DESC',
                        'orderby' => $prefooter_order_logic,
                        'posts_per_page' => '10',
                        'post_type' => 'post',
                        'category_name' => $prefooter_category_select
                    ));

                }
4

4 に答える 4

2

syntax error, unexpected T_CONSTANT_ENCAPSED_STRINGこの行の終わりにコンマがないため、これが生成されます。

($prefooter_order_logic == 'xviews' ? "'v_sortby' => 'views', 'v_orderby' => 'desc'," : ""), 
                                                                                           ^ here

編集:

条件に基づいて、配列を作成した後に変更するだけです。

$arr = array(

    'posts_per_page' => '10',
    'post_type' => 'post',
    'category_name' => $prefooter_category_select

);

if($prefooter_order_logic == 'xviews')
{
    $arr['v_sortby'] = 'views';
    $arr['v_orderby'] = 'desc';
}
else
{
    $arr['order'] = 'DESC';
    $arr['orderby'] = $prefooter_order_logic;
}

query_posts($arr);

または、次を使用しますarray_merge()

$arr = array(

    'posts_per_page' => '10',
    'post_type' => 'post',
    'category_name' => $prefooter_category_select

);

$arr = $prefooter_order_logic == 'xviews' ? array_merge($arr, array('v_sortby' => 'views', 'v_orderby' => 'desc')) : array_merge($arr, array('order' => 'desc', 'orderby' => $prefooter_order_logic));

query_posts($arr);
于 2012-10-12T06:19:55.603 に答える
2

ここに最初の問題がありますが、)その後?,最後 にはありません

$prefooter_order_logic == 'xviews' ? "'v_sortby' => 'views', 'v_orderby' => 'desc'," : "")

する必要があります

($prefooter_order_logic == 'xviews' )? "'v_sortby' => 'views', 'v_orderby' => 'desc'," : ""),
于 2012-10-12T06:17:11.997 に答える
1

発生しているエラーを指定する必要がありますが、何をしようとしているのかを判断するのは困難です。

ただし、三項演算子を使用した行の最後にコンマがありません。

'desc'," : "")

その後にコンマを入れます。

于 2012-10-12T06:19:02.433 に答える
0

私はあなたがこのようなPHPコードを評価することができなかったと思います:

"'v_sortby' => 'views', 'v_orderby' => 'desc',"

配列の一部ではなく、PHPインタープリターのテキストのように見えるはずですが、よくわかりません。

于 2012-10-12T06:31:35.193 に答える