簡體   English   中英

如何增加printf格式的php變量

[英]How to increment printf format php variable

在我的WordPress博客上,我試圖為邊欄小部件提供特定的ID。 我只想給他們一個簡單的遞增ID,例如id="sidebar-box-" . $i id="sidebar-box-" . $i其中i是遞增變量。

我有從此頁面獲得的代碼, 代碼可以為其指定特定的ID,但出於樣式目的並希望使CSS遵循相同的模式,我希望對ID進行更多控制。 我目前擁有的代碼如下所示:

function custom_sidebar() {
    register_sidebar( array(
        'name'          => 'Blog Sidebar',
        'id'            => 'blog_sidebar',
        'before_widget' => '<div id="sb-box-%d" class="sidebar-box">',
        'after_widget'  => '</div>',
        'before_title'  => '<h3>',
        'after_title'   => '</h3>',
    ) );
}

但是這段代碼為我提供了這樣的ID: decent_comments_widget-2 我的理解是,%1表示要根據我已閱讀的內容像字符串一樣使用printf函數的第一個參數。 我不明白$ s部分是什么,我什至不知道它從哪里獲得第一個參數,因為寄存器側邊欄函數僅作為第一個參數傳遞給數組。 用結尾的變量遞增一個簡單id的正確方法是什么? 也歡迎您以這種格式幫助您理解變量。 謝謝!

編輯:我將id值從“ sb-box-%1 $ s”更改為“ sb-box-%d”,但現在我一次又一次地為每個“側邊欄-盒”打印“ sb-box-0”側欄中的class div。 我找不到設置變量的正確位置。

通常,使用sprintf()時,您會使用%s (或其他方式)來表示要在其中放置一個字符串。

但是,當您有多個(不同的)轉換規范( %_ )時,您需要按照傳遞給sprintf()的參數的順序與它們在格式字符串中的順序相同,或者可以指定它們需要的順序。否則,該字符串可能看起來不符合您的預期。

使用n$ (如@AlexBlex所說)可以很容易地做到這一點,其中n是第n個參數。

例:
我有I am buying %d %s.的字符串I am buying %d %s. (可以是I am buying 2 tomatoes. ),但是我希望我的sprintf()函數像這樣的sprintf($format, $item, $amount);
我當前的字符串將無法實現。 通過在%s之間添加1 $,我可以指定該占位符將是第一個參數, $2 %d提供$2來指定它將是第二個參數。
我得到的是:

$item = "tomatoes";
$amount = 314;
$format = "I am buying %2$d %1$s.";
echo sprintf($format, $item, $amount);

// I am buying 314 tomatoes.   

sprintf()的文檔提供了有關參數交換的更多信息。

id =“ sidebar-box-”。 $ I
您想增加div ID的一部分,我建議您通過這種方式將before_widget數組鍵的值更改為<div id="side-barbox-%d" class="sidebar-box">可以輕松地增加整數,然后將其傳遞給sprintf()

暫無
暫無

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

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