警告:为 foreach() 提供的参数无效
Posted
技术标签:
【中文标题】警告:为 foreach() 提供的参数无效【英文标题】:Warning: Invalid argument supplied for foreach() 【发布时间】:2017-06-01 20:07:58 【问题描述】:我的产品详细信息有误,我不知道还有什么要更改的地方。当我将$detail
更改为$categories
时成功但与功能子菜单相同。这不符合我的意愿
我的观点
<!-- navbar -->
<div class="row">
<?php foreach ($categories as $row) : ?>
<div class="col-sm-3">
<h5><?php echo $row->categoriesName; ?></h5>
<ul><li><a href="<?php echo base_url();?>member/detail">
<?php echo $row->productName; ?></a> </li></ul>
</div>
<?php endforeach; ?>
</div>
<!-- product detail -->
<?php foreach ($detail as $details_new) : ?>
<div class="box">
<h1 class="text-center"><?php echo $details_new->productName;?></h1>
<p class="price"><?php echo $details_new->price;?></p>
</div>
<?php endforeach; ?>
我的控制器
public function home()
$data=array('title'=>'Pasar Online | Ayo Belanja Sekarang',
'username'=> $this->session->userdata('username'),
'product' => $this->product_model->all(),
'categories' => $this->categories_model->get_main(),
'isi' =>'member/index');
$this->load->view('template_home/wrapper',$data);
public function detail()
$data['username'] = $this->session->userdata('username');
$data['categories'] = $this->categories_model->get_main();
$data['detail'] = $this->categories_model->get_details();
$this->load->view('member/coba',$data);
我的模特
public function get_main()
$this->db->select('product.*,categories.*');
$this->db->from('product');
$this->db->join('categories','product.categoriesID=categories.categoriesID');
$this->db->limit(5);
$query = $this->db->get();
if($query->num_rows() > 0)
$results = $query->result();
return $results;
public function get_details()
$query = $this->db->query("SELECT * FROM product WHERE productID");
$row = $query->row();
还是不能显示单品
我不知道我的错误在哪里...请帮助我,谢谢
【问题讨论】:
Invalid argument supplied for foreach()的可能重复 我应该改变什么? 【参考方案1】:您正在以错误的格式迭代 details 数组。
public function get_details()
$query = $this->db->query("SELECT * FROM product WHERE productID");
$row = $query->row();
return $row;
这将只返回单行,没有任何索引,例如 - 0,1,2...
在视图页面上,您正在使用 foreach 循环,而 foreach 循环使用索引来迭代值,您可以像这样进行迭代 --
<div class="box">
<h1 class="text-center"><?php echo $detail->productName; ?></h1>
<p class="price"><?php echo $detail->price; ?></p>
</div>
请使用这种方式希望它会工作..
【讨论】:
但是为什么子类别只能显示一个?? 欢迎您...对不起,我没有得到您的问题....如果我的回答对您有帮助,您能否提供支持? 但是为什么子类别只能显示一个??其他人不能的子类别,并且总是出现在第一个子类别 你的意思是为什么它的显示结果没有索引?? 所以当我点击子类别时,它会显示详细的子类别【参考方案2】:在 codeigniter row()
中只选择对象格式的结果的第一行。所以不需要使用 foreach 循环。试试这样...
<div class="box">
<h1 class="text-center"><?php echo $detail->productName;?></h1>
<p class="price"><?php echo $detail->price;?></p>
</div>
并且 在模型中
public function get_details()
$query = $this->db->query("SELECT * FROM product WHERE productID");
$row = $query->row();
return $row;
【讨论】:
我想在消费者选择子品类时详细说明产品 使用ajax根据子类id获取详情? 仍然无法显示产品,我没有将其添加到 ajax 您正在发送到不同的视图,因此无需使用 ajax。但我不清楚您的问题。 如果一切正常,上面的代码将正确显示您的详细信息。【参考方案3】:这是因为$detail变量为空,该变量中没有可用的数据,在循环之前总是检查变量中的数据
<?php if(!empty($detail))
foreach ($detail as $details_new) : ?>
<div class="box">
<h1 class="text-center"><?php echo $details_new->productName;?></h1>
<p class="price"><?php echo $details_new->price;?></p>
</div>
<?php endforeach; ?>
【讨论】:
productName;?>
price;?>
没有外观,我要展示单品以上是关于警告:为 foreach() 提供的参数无效的主要内容,如果未能解决你的问题,请参考以下文章
为托管程序中的 foreach php pdo 提供的参数无效
请帮助:“在Wordpress中为foreach()提供了无效的参数”