Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.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 仅使用foreach limit显示具有值的字段_Php_Codeigniter - Fatal编程技术网

Php 仅使用foreach limit显示具有值的字段

Php 仅使用foreach limit显示具有值的字段,php,codeigniter,Php,Codeigniter,我有数据库结构 id |参考id |设施1 |设施2 |设施3 |设施4 |设施5 每个舒适度列的值为1或0。 进行搜索时,我需要显示值不等于零(值!=0)的字段。 我知道我可以做到这一点 if($data->amenity1 == 0) echo ''; 但我需要有限制的自动化 我的模型代码是 function select_all_active_amenities($for_id){ foreach($for_id as $id){ $prop_id = $i

我有数据库结构

id |参考id |设施1 |设施2 |设施3 |设施4 |设施5

每个舒适度列的值为1或0。 进行搜索时,我需要显示值不等于零(值!=0)的字段。 我知道我可以做到这一点

if($data->amenity1 == 0) echo '';
但我需要有限制的自动化

我的模型代码是

function select_all_active_amenities($for_id){
    foreach($for_id as $id){
        $prop_id = $id->vbc_item_id;
    }
    $this->db->select('*');
    $this->db->from('vbc_property_amenities');
    $this->db->where_in(array('v_ref_id'=> $prop_id));
    $this->db->limit(5);
    $query = $this->db->get();
    $result = $query->result();

    return $result;
}
请帮助

在选择之前将“DISTINCT”关键字添加到查询中,以获取唯一记录

$this->db->distinct();

希望它能帮到你

只需使用自定义数组生成删除空列即可

function select_all_active_amenities($for_id){
foreach($for_id as $id){
    $prop_id = $id->vbc_item_id;
}
$this->db->select('*');
$this->db->distinct('v_ref_id');
$this->db->from('vbc_property_amenities');
$this->db->where_in(array('v_ref_id'=> $prop_id));
// $this->db->limit(5);
 $query = $this->db->get();
 $result1 = $query->result_array();

 //fetch the value as array 

//and this query for fetch the column name what you have right now an where not equal to id and ref_id

 $this->db->query("SELECT COLUMN_NAME FROM information_schema.COLUMNS WHERE TABLE_NAME='vbc_property_amenities' AND COLUMN_NAME !='id' AND COLUMN_NAME != 'ref_id AND COLUMN_NAME !='id' ")->result_array();
  $query = $this->db->get();
  $result2 = $query->result_array();

foreach($result as $key1=>$row1)
{

        foreach($result2 as $key2=>$row2)
        {

            if($row2 ==$row1[$row2] && $row1 ==0)
            {

                unset($result[$key1][$row2]);
            }

        }



}

//$result only have the where value=1 

return $result;

//you just limit the five in your view page 
}

是否只有固定的6个礼仪栏,或者它是动态变化的?@jothi,大约有105个礼仪栏,但将来可能会增加。如果($Amentity1==0)echo“”,为什么不选择这一个呢?有什么问题吗?好的。因为在过滤器的搜索页面上,我设置了固定的数字来显示5个便利设施(可以扩展)。如果我做了“如果($data->amendity1==0)回显”;`那么,我将无法维护5个便利设施,因为我不想展示那些没有任何价值的便利设施。除了这两种id |便利设施1 2 3..之外,还有其他列名吗?谢谢你知道我该如何限制设施的重复展示吗。。例如。。如果hotel1有设施1,hotel2也有设施1,那么设施1会显示两次。上面的代码你知道我做了什么吗?它对你有用吗?我实际上已经开始工作了。。现在我的挑战是复制品。。目前我在db只有两处房产,设施相同。。当我运行我的查询时,它回显v_air condition v_queenbed,v_kingbed,v_air condition,v_queenbed,v_kingbed,v_kingbed,现在你构建新数组,并使用in_数组函数来获取,如果在新数组中已经有这样的值,不要将其插入新数组bro,你也可以试试@Sebastian的group_现在我在db里只有两处房产,都有相同的便利设施。。当我运行我的查询时,它回显v_airconment v_queenbed,v_kingbed,v_airconment,v_queenbed,v_kingbed。。。看到副本了吗?我怎么可能做到呢?你试过“$this->db->groupby('column_name');”吗??