2017-10-13 24 views
0

我寫了這個代碼array_slice但對於圖像的PHP

<?php 
     $a = Meme::all(); 
     $b = count($a); 
     for($i=$b;$i<$b-3;$i--) { 
    ?>  <div class="col-sm-6"><img class="lazy" data-src="<?php echo $a[$i]->path; ?>" /> </div> 
    <?php 
    }?> 

我要輸出的最後3個模因(圖片),但這個for循環不起作用。所以我發現了一種叫做array_slice的東西,我想用它,但是大家都在使用print_r,但在這種情況下,我並不需要它。那麼有什麼建議?

+0

_...最後3個memes(圖片)_你是指'$ a'的最後3個元素嗎? –

+0

是的。基本上a是一個數組,我有一個列路徑,我把它放在img src中以獲得圖像 –

+0

那麼究竟是不是使用'for'-Loop? – WasteD

回答

2

儲存在一個新的數組$b通過使用array_slice$a陣列的那些3個元素:

<?php  
    $a = Meme::all(); 
    $b = array_slice($a, 3); 

    for ($i = 0; $i < 3; $i++){ 
?> 
    <div class="col-sm-6"><img class="lazy" data-src="<?php echo $b[$i]->path; ?>" /> </div> 
<?php 
    } 
?> 
0

這是因爲這容易:

$nb = 3; 

$a = [1 => 'foo', 2 => 'bar', 3 => 'john', 4 => 'doe', 5 => 'test']; 
$b = count($a); 
$results = array_slice($a, $b-$nb, $nb); 

foreach($result AS $k => $result) { 
    echo '<p>'.$result.'</p>'; 
} 

Also see this snippet here in action

解釋:你可以使用array_slice,第一個參數是你的數組。 第二個如果偏移量,即數組的開始鍵。

0

FWIW我已經提供了另一種替代:

<?php 
$a = Meme::all(); 
$b = count($a); 
$toShow = 3; // how many elements to display 

for ($i = $b - $toShow; $i < $b; $i++) { ?> 
    <div class="col-sm-6"><img class="lazy" data-src="<?php echo $a[$i]->path; ?>" /></div> 
<?php } ?> 

它比接受溶液稍快。
需要注意的是,如果數組不是3的倍數,那麼由於拼接將不會返回長度爲3的數組,因此經過糾正的解決方案將引發錯誤。當然,如果$toShow大於或等於count($a)這也會引發錯誤。