Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 代码点火器计数/If_Php_Codeigniter - Fatal编程技术网

Php 代码点火器计数/If

Php 代码点火器计数/If,php,codeigniter,Php,Codeigniter,我花了太长时间才弄明白。我正在使用Codeigniter查询数据库。 模型就是这样做的 function currentfunction($id) { $query = $this->db->get_where('mytable', array("id =" => $id)); if($query->num_rows() > 0){ return $query->result_array(); }else {

我花了太长时间才弄明白。我正在使用Codeigniter查询数据库。 模型就是这样做的

 function currentfunction($id)
{ 
    $query = $this->db->get_where('mytable', array("id =" => $id));

    if($query->num_rows() > 0){
        return $query->result_array();
    }else {
        return false;
    }
}
控制器

$this->load->model('Display');
$results = $this->Display->currentfunction($id);
$this->load->view('current_items', array('currentitems' => $results));
景色

foreach($currentitems as $row){
              echo $row['name']
              ///....do more
              }
工作正常,除非没有返回行

然后

我如何处理if…else…场景

我试过了,但不管用。PlsHlp.

只要做:

if(is_array($currentitems)) {
    foreach($currentitems as $row){
              echo $row['name']
              ///....do more
    }
}
else
{
    echo "No items in database!";
}

您将收到一个错误,因为foreach希望其第一个参数是数组。如果数据库中没有项目,但函数返回false。

这是因为运行代码时:

$query = $this->db->get_where('mytable', array("id =" => $id));

    if($query->num_rows() > 0){
        return $query->result_array();
    }else {
        return false;
    }
当没有返回任何行时,上面的代码可以正常工作,但在您尝试运行for循环的视图中它不起作用。 如果没有返回行,则不应运行此for循环。然而,您正在尝试运行forloop,即使没有要处理的行

我的建议是这样修改代码:

$query=$this->db->get_-where('mytable',数组(“id=“=>$id))

在视图中,在for循环之前,您将有如下内容:

if($noResults != true){
     foreach($currentitems as $row){
        echo $row['name']
        ///....do more
     } 
}
else{
     //do something 
     echo "No items in database!";

}
希望这有帮助


PK

为什么不这样做:

function currentfunction($id)
{ 
    return $this->db->get_where('mytable', array("id =" => $id));
}
在视图中,如果没有结果,将返回一个空数组,
foreach
不会抛出错误:

foreach($currentitems->result_array() as $row)
{
    echo $row['name']
    ///....do more
}
更干净

如果要在视图中显示错误消息,可以执行以下操作:

if($currentitems->num_rows() > 0)
{
    foreach($currentitems->result_array() as $row)
    {
        echo $row['name']
        ///....do more
    }
}
else
{
    // Error message
}

这比两次检查if/else是否有结果要好,就像哈夫丹和帕万建议的那样。

别担心。你比我先到那儿。我们俩心里都有相同的谴责。也就是说,如果不先检查是否有行可以使用,就不能运行forloop。GrRr下次我会在你之前到达:P很好,不过有一个问题。这不是“如果…”或“其他…”。。在MVC模型中,逻辑最好留给控制器?但我不确定真正的优势是什么。在我看来,在视图中使用if/else或foreach迭代没有什么错。在视图中,我喜欢使用控件结构()的替代语法来保持视图的整洁。如果您不想显示错误消息,您甚至不需要If/else!
foreach($currentitems->result_array() as $row)
{
    echo $row['name']
    ///....do more
}
if($currentitems->num_rows() > 0)
{
    foreach($currentitems->result_array() as $row)
    {
        echo $row['name']
        ///....do more
    }
}
else
{
    // Error message
}