2011-08-24 28 views
-1

下面的[示例]代碼看起來好像在循環中可能更好,或者使其更具動態性。唯一改變的是字段/變量名稱中的_xx和_xxyy。我如何改善這一點,所以我不必寫20如果陳述?:如何讓這個PHP代碼循環或更動態?

<?php if (get_custom_field('itinerary_title_02')):?> 
    <div id="itinerary_entry"> 
     <h2><?php print_custom_field('itinerary_title_02'); ?></h2> 
     <p><?php print_custom_field('itinerary_content_02'); ?></p> 
     <p class="accommodation_name"><?php print_custom_field('itinerary_acc_nme_02'); ?></p> 
     <p class="accommodation_desc"><?php print_custom_field('itinerary_acc_dsc_02'); ?></p> 
     <?php if (get_custom_field('itinerary_photo_0201')):?> 
     <div><img src="<?php print_custom_field('itinerary_photo_0201'); ?>"></div> 
     <?php endif;?> 
    </div> 
    <?php endif;?> 

    <?php if (get_custom_field('itinerary_title_03')):?> 
    <div id="itinerary_entry"> 
     <h2><?php print_custom_field('itinerary_title_03'); ?></h2> 
     <p><?php print_custom_field('itinerary_content_03'); ?></p> 
     <p class="accommodation_name"><?php print_custom_field('itinerary_acc_nme_03'); ?></p> 
     <p class="accommodation_desc"><?php print_custom_field('itinerary_acc_dsc_03'); ?></p> 
     <?php if (get_custom_field('itinerary_photo_0301')):?> 
     <div><img src="<?php print_custom_field('itinerary_photo_0301'); ?>"></div> 
     <?php endif;?> 
    </div> 
    <?php endif;?> 

    <?php if (get_custom_field('itinerary_title_04')):?> 
    <div id="itinerary_entry"> 
     <h2><?php print_custom_field('itinerary_title_04'); ?></h2> 
     <p><?php print_custom_field('itinerary_content_04'); ?></p> 
     <p class="accommodation_name"><?php print_custom_field('itinerary_acc_nme_04'); ?></p> 
     <p class="accommodation_desc"><?php print_custom_field('itinerary_acc_dsc_04'); ?></p> 
     <?php if (get_custom_field('itinerary_photo_0401')):?> 
     <div><img src="<?php print_custom_field('itinerary_photo_0401'); ?>"></div> 
     <?php endif;?> 
    </div> 
    <?php endif;?> 

在此先感謝!

+6

WordPress的代碼讓我傷心。只是在說'。 –

+0

在get_custom_field上使用foreach語句,它來自哪裏? – Drewdin

+0

我覺得你@ @克里斯! – crashintoty

回答

1
<?php 
for($i=2 ; $i<5 ; $i++){ 
    $titleNum = sprintf("%02d", $i); 
    if (get_custom_field('itinerary_title_'.$titleNum)) { 
?> 
    <div id="itinerary_entry"> 
     <h2><?php print_custom_field('itinerary_title_'.$titleNum); ?></h2> 
     <p><?php print_custom_field('itinerary_content_'.$titleNum); ?></p> 
     <p class="accommodation_name"><?php print_custom_field('itinerary_acc_nme_'.$titleNum); ?></p> 
     <p class="accommodation_desc"><?php print_custom_field('itinerary_acc_dsc_'.$titleNum); ?></p> 
    <?php if (get_custom_field('itinerary_photo_'.$titleNum.'01')){ ?> 
     <div><img src="<?php print_custom_field('itinerary_photo_'.$titleNum.'01'); ?>"></div> 
    <?php } ?> 
    </div> 
    <?php } 
    } 
    ?> 
+0

所以for函數中的「$ i = 2」代表我的出發點?如果是這樣,因爲我真的從頭開始(「02」只是作爲例子),我需要用「$ i = 1」替換「$ i = 2」? – crashintoty

+0

最後一個問題:sprintf僅僅是替換單個數字的數字(即7)並且使它們成爲兩位數字(即07),對吧?所以,當$ i的值等於10或更大時,它不爲其添加零(即010),對嗎? (我搜索/研究了sprintf函數,但它讓我更困惑) – crashintoty

+0

一切正常!我將$ i = 2更改爲$ i = 1,並且sprintf函數確實將單個數字轉換爲兩位數。我確實改變了$ i <5到$ i <21正確地獲得了所有20個可能的集合($ i <20將僅返回19)。儘管如此,偉大的代碼!非常感謝您的時間和貢獻! – crashintoty

1

您可以用for循環代替您的重複代碼。

<?php 
for ($i = 2; $i <= 4; $i++) { // Modify this range as needed 
    $dynamic_value = ($i < 10) ? "0$i" : $i; // Prefix the value with a '0' when necessary 

    if (get_custom_field("itinerary_title_$i")):?> 
     <!-- HTML and PHP goes here. Replace each hard-coded number with '$i' --> 
    <?php 
} 
?> 
+0

謝謝!循環和任何有$ i ++的東西都是我的弱點。 – crashintoty