我写了这段代码
<?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 :(得分: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)
这也会引发错误。