[英]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.