array_slice但是对于图像php

时间:2017-10-13 10:20:45

标签: php arrays image slice

我写了这段代码

  <?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但在这种情况下我不需要它。那有什么建议吗?

3 个答案:

答案 0 :(得分:1)

使用$a将数组$b的3个元素存储到新数组array_slice中:

<?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
    }
?>

答案 1 :(得分: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,第一个参数是您的数组。   第二个是偏移量,即数组的起始键。

答案 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的数组。当然,如果$toShow更大大于或等于count($a)这也会引发错误。