【问题标题】:Remove row from array result from codeigniter query从 codeigniter 查询的数组结果中删除行
【发布时间】:2020-02-05 00:21:38
【问题描述】:

我在 codeigniter 中执行下面的查询,返回 4 行:

$available_rooms = $this->db->query("SELECT id_room as id, ea_rooms.name as name FROM ea_rooms_services WHERE id_service =" . $service_id)->result_array();

输出例如:

 {
{id:1, name:a}
{id:2, name:b}
{id:3, name:c}
{id:4, name:d}
}

我有一个房间 ID 为 $occupiedRooms(例如 {0=>1, 1=>2})的数组,其填充方式如下:

$occupiedRooms = array();

foreach ($listing as $element){
... SOMECODE
    if ($id_room != null)
         $occupiedRooms[] = $id_room;
}

我想取消设置$available_rooms 中与$occupiedRooms 中具有相同ID 的所有行。

预期输出:

 {
{id:3, name:c}
{id:4, name:d}
}

我正在使用下面的代码,但它不起作用

foreach ($available_rooms as $elementKey => $element){
    if(in_array($element['id'], $occupiedRooms)){
       unset($available_rooms[$elementKey]);
    }
}

我也用下面的代码尝试了array_filter,但它也没有用:

foreach ($occupiedRooms as $id){
    $available_rooms = array_filter($available_rooms, function($room) use($id)
        {
             return $room['id'] != $id;
        });
}

【问题讨论】:

  • 您的 $occupiedRooms 是否正确?

标签: php arrays codeigniter


【解决方案1】:

这会更短:

$occupied_rooms = array(1,5,6);

$available_rooms = $this->db->query("SELECT id_room as id, ea_rooms.name as name FROM ea_rooms_services WHERE id_service =" . $service_id . " AND id_room NOT IN ( " . implode(",", $occupied_rooms) . " ) ")->result_array();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多