2017-10-13 3 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を使用していたが、この場合、私はそれを必要としない。だから、どんな提案? array_sliceを使用して、新しい配列$bの配列$a

+0

_...最後の3つのmemes(画像)_あなたは '$ a'の最後の3つの要素を意味しますか? –

+0

はい。基本的には、私は画像を得るためにimg srcに入れた列のパスを持つ配列です –

+0

'for'-Loopで正確に動作しないのは何ですか? – WasteD

答えて

2

ストアこれらの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

説明:最初のparamを配列として使用して、array_sliceを使用します。 オフセットの場合は2番目に、配列の開始キー。

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の長さの配列を返さないため、修正された解はエラーをスローします。当然、$toShowcount($a)これでもエラーが発生します。