php - foreach 由于某种原因无法正常工作
问题描述
我的脚本的这一部分显示了我的网站提供的最后一个报价,但由于某种原因,它显示了与图像显示相同的报价 3 次。
这是脚本附带的代码
<?php foreach($specialoffers as $offer) if ($tmp++ < 3) { ?>
<div class="col-md-4">
<div class="col-md-12">
<?php if($specialoffers[0]->price > 0){ ?> <span class="wow bounce ttu"><?php echo trans('0536');?> <b><?php echo trans('0388');?></b> <small><?php echo $specialoffers[0]->currCode;?></small> <?php echo $specialoffers[0]->currSymbol; ?><?php echo $specialoffers[0]->price;?></span>
<?php } ?>
<div class="imgLodBg">
<div class="load"></div>
<a href="<?php echo base_url(); ?>offers">
<img data-wow-duration="0.2s" data-wow-delay="1s" class="wow fadeIn" src="<?php echo $specialoffers[0]->thumbnail;?>">
</a>
</div>
</div>
<div class="col-md-12">
<h3 class="offh3"><strong class="ttu"><?php echo character_limiter($specialoffers[0]->title,30);?></strong></h3>
<p class="offp">
<?php echo character_limiter($specialoffers[0]->desc,240);?>
<a href="<?php echo base_url(); ?>offers" >
Read More
</a>
</p>
</div>
</div>
<?php } ?>
当我尝试以下更改时,页面崩溃了,我收到了这个错误
[2018 年 8 月 12 日 13:48:09 UTC] PHP 致命错误:无法在第 152 行的 /home/bannabooking/public_html/beta/themes/default/views/home/index.php 中使用 stdClass 类型的对象作为数组
更改代码:
<?php foreach($specialoffers as $offer) if ($tmp++ < 3) { ?>
<div class="col-md-4">
<div class="col-md-12">
<?php if($offer[0]->price > 0){ ?> <span class="wow bounce ttu"><?php echo trans('0536');?> <b><?php echo trans('0388');?></b> <small><?php echo $offer[0]->currCode;?></small> <?php echo $offer[0]->currSymbol; ?><?php echo $offer[0]->price;?></span>
<?php } ?>
<div class="imgLodBg">
<div class="load"></div>
<a href="<?php echo base_url(); ?>offers">
<img data-wow-duration="0.2s" data-wow-delay="1s" class="wow fadeIn" src="<?php echo $offer[0]->thumbnail;?>">
</a>
</div>
</div>
<div class="col-md-12">
<h3 class="offh3"><strong class="ttu"><?php echo character_limiter($offer[0]->title,30);?></strong></h3>
<p class="offp">
<?php echo character_limiter($offer[0]->desc,240);?>
<a href="<?php echo base_url(); ?>offers" >
Read More
</a>
</p>
</div>
</div>
<?php } ?>
解决方案
在里面foreach () {}
你已经有单独的$offers
对象了。因此,$offer[0]->price
您需要直接访问每个$offer->price
,$offer->desc
等,而不是通过 访问它们。
通常,该foreach () {}
方法如下所示:
$offers = [new Offer('a'), new Offer('b')];
foreach ($offers as $offer) {
// $offer here sequentially corresponds
// to each element of the $offers array
echo $offer->price;
}
另一种完成数组迭代的方法$offers
可能如下所示:
$offers = [new Offer('a'), new Offer('b')];
for ($i = 0; $i < array_length($offers); $i++) {
echo $offers[$i]->price;
}
因此,您只需要坚持使用其中一种方法。而且通常foreach
看起来更准确。