2016-05-17 60 views
0

我想在我的代碼中執行DRY的方法,但我很難搞清楚它。而且,如果沒有image_1,我想隱藏整個代碼。希望你能幫助我做到這一點。如何循環一個php代碼?

下面的代碼

<div class="col-md-4"> 
    <?php 
    $image = get_field('image_1'); 
    if(get_field('image_1')) 
    { 
     echo '<a href="' . get_field('image_link_1') . '">';?> 
     <img src="<?php echo $image['url']; ?>" title="<?php echo $image['title']; ?>" alt="<?php echo $image['alt']; ?>" /> 
     <?php echo '</a>'; 
    } else { 
     echo '<img src="http://localhost/image.png">'; 
    } ?> 
</div> 
<div class="col-md-4"> 
    <?php 
    $image = get_field('image_2'); 
    if(get_field('image_2')) 
    { 
     echo '<a href="' . get_field('image_link_2') . '">';?> 
     <img src="<?php echo $image['url']; ?>" title="<?php echo $image['title']; ?>" alt="<?php echo $image['alt']; ?>" /> 
     <?php echo '</a>'; 
    } else { 
     echo '<img src="http://localhost/image.png">'; 
    } ?> 
</div> 
<div class="col-md-4"> 
    <?php 
    $image = get_field('image_3'); 
    if(get_field('image_3')) 
    { 
     echo '<a href="' . get_field('image_link_3') . '">';?> 
     <img src="<?php echo $image['url']; ?>" title="<?php echo $image['title']; ?>" alt="<?php echo $image['alt']; ?>" /> 
     <?php echo '</a>'; 
    } else { 
     echo '<img src="http://localhost/image.png">'; 
    } ?> 
</div> 
+4

究竟是什麼問題? – jmattheis

+0

@JannisMattheis我想循環代碼。 –

+0

正如詹尼斯所說,你已經花了一些時間試圖弄清楚了!如果你向我們展示了你到底有多遠,我們可以回答你的問題你應該做什麼不同的事情! – stuXnet

回答

0

只是一個提示...:

<?php 
    for ($i = 0; $i < 3; $i++) { 
    echo "<div class='col-md-4'>" . "\n"; 
    $image = get_field("image_" . ($i + 1)); 
    ... 
    echo "</div>" . "\n"; 
    } 
?> 
2

你應該投入到陣列的差異,然後換到一切for循環:

<?php 
    $images = array('image_1', 'image_2', 'image_3'); 
    $links = array('image_link_1', 'image_link_2', 'image_link_3'); 

    for($i=0; $i<3; $i++){ 
?> 
<div class="col-md-4"> 
    <?php 
    $image = get_field($images[$i]); 
    if(get_field($images[$i])){ 
     echo '<a href="' . get_field($links[$i]) . '">'; 
    ?> 
    <img src="<?php echo $image['url']; ?>" title="<?php echo $image['title']; ?>" alt="<?php echo $image['alt']; ?>" /> 
    <?php echo '</a>'; 
    } else { 
     echo '<img src="http://localhost/image.png">'; 
    } 
    ?> 
</div> 
<?php 
    } 
?> 
+0

這個技巧!謝謝您的幫助。乾杯! :D –

+0

順便說一句,如果沒有'image_1'上傳,我怎麼能隱藏它? –

+0

@RubyAnnRosales我可以考慮多種解決方案,但最簡單的方法可能是將'for'條件更改爲:for($ i = 0; $ images [0]&& $i<3; $ i ++)' – cdm

0

東西沿着這些線應該讓你開始,如果我正確理解你:

<?php for ($q = 1; $q <= 3; $q++) { 
    $image_loop = 'image_' . $q; 

    echo '<div class="col-md-4">'; 

    if ($image = get_field($image_loop)) { 
     echo '<a href="' . get_field('image_link_' . $q) . '">'; 
?> 
     <img src="<?php echo $image['url']; ?>" title="<?php echo $image['title']; ?>" alt="<?php echo $image['alt']; ?>" /> 
     <?php echo '</a>'; 
    } else { 
     echo '<img src="http://localhost/image.png">'; 
    } ?> 
</div> 

<?php } // end loop ?> 
+0

感謝您的代碼。它像魔術一樣工作。乾杯:) –

+0

但是,如果沒有'image_1'上傳,我怎麼能隱藏它? –

+0

這是留給你的練習。 Stackoverflow不是讓你的代碼爲你寫的地方!提示:也許在'for'循環之前測試'image_1'。 –

0

其他建議在這裏也能發揮作用,但這裏是我會做:

首先安排在一個關聯數組的圖像與鍵在圖像名稱和值是圖片鏈接,然後通過迭代一個foreach循環。

除非嚴格需要,否則我通常會嘗試不回顯HTML。

<?php 
$array = [ 
    "image_1" => "image_link_1", 
    "image_2" => "image_link_2", 
    "image_3" => "image_link_3", 
    "image_4" => "image_link_4" 
]; 

foreach ($array as $name => $link): 
    $image = get_field($name); 
    if ($image): ?> 
    <div class="col-md-4"> 
     <a href="<?=get_field($link)?>"> 
      <img src="<?= $image['url']; ?>" title="<?= $image['title']; ?>" alt="<?= $image['alt']; ?>" />   
     </a> 
     <?php else: ?> 
      <img src="http://localhost/image.png"> 
     <?php endif; ?> 
    </div> 
<?php endforeach; ?>