in_array()codeigniter PHP

时间:2012-08-13 07:32:36

标签: php arrays codeigniter

你好成员在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);

有什么建议吗?

4 个答案:

答案 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,那么用命名的函数替换匿名函数。