【问题标题】:how to handle php forloop returning no results如何处理php for循环不返回结果
【发布时间】:2015-09-15 05:23:53
【问题描述】:
我正在运行一个 for 循环来从论坛表中收集数据,但如果没有返回结果,我不太确定如何处理它。这是我必须收集数据的代码。
$q = $this->db->query("SELECT * FROM newslist ORDER BY pubdate DESC");
if ($q->num_rows() > 0) {
foreach ($q->result() as $row) {
$data[] = $row;
}
}
return $data; else {
return echo = "nose";
}
【问题讨论】:
标签:
php
codeigniter
for-loop
【解决方案1】:
$q = $this->db->query("SELECT * FROM newslist ORDER BY pubdate DESC");
$data = array(); // Initialize the array in case there are no records.
if ($q->num_rows() > 0){
foreach ($q->result() as $row){
$data[] = $row;
}
}
if (empty($data)) { // If there are no records, $data will be empty.
return "nose";
}
else { // If $data has records, will return data from SQL.
return $data;
}
说明:
1) 初始化$data 变量。如果我们没有得到任何记录,$data 将不会被追加,导致初始化变量$data 返回错误。通过在循环之前对其进行初始化,我们正在克服它。
2) 检查empty() 是否为$data,如果为空,则返回错误字符串,否则为$data。
【解决方案2】:
一点点流量问题。请参阅修改后的解决方案。
$q = $this->db->query("SELECT * FROM newslist ORDER BY pubdate DESC");
if($q->num_rows() > 0){
foreach($q->result() as $row){
$data[] = $row;
}
return $data;
} //<-- this was on the wrong line
else {
return "No data!";
}
【解决方案3】:
在if 条件内返回您的数据,不要同时使用return and echo。
$q = $this->db->query("SELECT * FROM newslist ORDER BY pubdate DESC");
if ($q->num_rows() > 0) {
foreach ($q->result() as $row) {
$data[] = $row;
}
return $data;// return data inside if condition
}
else {
return "nose";// remove echo from here
}
【解决方案4】:
你可以用这个
$query = $this->db->query("SELECT * FROM newslist ORDER BY pubdate DESC");
$result = $query->result_array();
$count = count($result);// counting data
if(empty($count))
{
$log = 'nose';
return $log;
}
else
{
return $result;
}