你好成员在codeigniter中注意到异常
在我的模型中查询数据库以获取user_id列表
$recs = $this->db->query('select id from users');
这很简单,但我想将结果作为数组返回
所以我做了
$reccs->result_array();
但现在在我的控制器中我想检查in_array(124,$ returned_array); 这是不成功的,因为codeigniter已将id数组封装到v大外部数组中,如此
Array ( [0] => Array ( [id] => 0 ) [1] => Array ( [id] => 11 ) [2] => Array ( [id] => 29 ))
如何使用in_array php函数只检查id?
OR
我如何构建一个普通数组只是为了存储类似
的id $demo = array();
foreach($recs as $r)
$demo = array($r->id);
有什么建议吗?
答案 0 :(得分:2)
如果您想检查用户是否在那里,您应该进行计数查询。
$this->db->where('id',124);
$count = $this->db->count_all_results('users');
if($count) {
// found
} else {
// not found
}
答案 1 :(得分:1)
正如其他评论所说,有更好的方法可以做到这一点,但正如你坚持这样做,只需将id转换为数组以匹配结果数组结构:
in_array(array('id' => 124),$returned_array)
答案 2 :(得分:1)
您可以循环结果集并生成新数组并使用它。以下是可能有用的代码
$i=0;
foreach($reccs->result_array() as $values)
{
$new_array[]=$values[$i]['id'];
$i++;
}
使用$ new_array进行in_array比较
答案 3 :(得分:0)
您可以使用array_map()
从每个子阵列中拔出该键。然后,in_array()
将按正常方式工作。
$found = in_array(124,
array_map(function($val) { return $val['id']; },
$returned_array
)
);
如果你没有> = PHP 5.3,那么用命名的函数替换匿名函数。