簡體   English   中英

如何在PHP for()循環中的簡寫if / else語句中使用變量?

[英]How do I use a variable inside of a shorthand if/else statement in a PHP for() loop?

我正在嘗試使用FOR循環編寫動態CSS。 CSS需要根據數據庫表中的項目數量進行更改。 這是我的嘗試,但沒有給我我想要的輸出:

    <?php
    $count_posts = wp_count_posts( 'portfolio' )->publish; // This is for a wordpress site.
    $slidecount = ceil( $count_posts / 3 ); // there are 3 database entries in each "slide".

    for ($c = 0 ; $c < $slidecount; $c++){ 
    echo '#slide' . ($c + 1) . ':checked ~ #controls label.c-label' . ($c < $slidecount ? (($c + 2) . ', ') : '1'); // This is the part I'm not sure on... How do I properly nest the ($c + 2) expression into a shorthand if/else statement ??
    }
    echo ' {' . "\n" . 'float: right;' . "\n" . 'display: block; }' . "\n";
    ?>

輸出(當數據庫表中有5個項目時):

            #slide1:checked ~ #controls label.c-label2, 
    #slide2:checked ~ #controls label.c-label3, 
    #slide3:checked ~ #controls label.c-label4, 
    #slide4:checked ~ #controls label.c-label5, 
    #slide5:checked ~ #controls label.c-label6 {
    float: right;
    display: block;
    }

所需的輸出:

    #slide1:checked ~ #controls label.c-label2, 
    #slide2:checked ~ #controls label.c-label3, 
    #slide3:checked ~ #controls label.c-label4, 
    #slide4:checked ~ #controls label.c-label5, 
    #slide5:checked ~ #controls label.c-label1 {
    float: right;
    display: block;
    }

我希望FOR循環的最后一次執行將'1'附加到'label'的末尾,以便CSS選擇器指向第一個元素“ c-label1”。 這用於構建純CSS滑塊,該滑塊使用單選按鈕更改幻燈片,並且一旦到達末尾就需要將幻燈片循環回到起始位置。 每當保存新的數據庫條目時,我都需要代碼自動更新。

誰能幫我清理代碼,使其起作用?

非常感謝您。

在您的for循環條件下

$c < $slidecount

這意味着循環主體中的相同條件也得到了滿足,因此將永遠不會執行生成c-label1的代碼。

嘗試改變

$c < $slidecount 

($c < ($slidecount-1))

發生這種情況是因為您在語句中使用了$c < $slidecount ,但是$c值從0開始,所以它永遠不會與您的slidecount匹配,並且不會為假。 您還應該更改圓括號()

一種快速的解決方案是將$c變量加1。 這應該工作

(($c+1) < $slidecount ? ($c + 2) . ', ' : '1');

這就是您使用() 嘗試這個:

echo '#slide' . ($c + 1) . ':checked ~ #controls label.c-label' . ($c < $slidecount ? $c + 2 . ', ': '1');

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM