2012-08-13 77 views
1

你好成员异常的笨IM注意到in_array()codeginter PHP

在我的模型即时查询数据库获取USER_ID的列表只

$recs = $this->db->query('select id from users'); 

这很简单,但我想返回结果为数组

,所以我做

$reccs->result_array(); 

,但现在在我的控制,我想牛逼o检查in_array(124,$ returned_array); 这不是成功的,因为笨已封装的ID阵列成V大的外部阵列像这样

Array ([0] => Array ([id] => 0) [1] => Array ([id] => 11)   [2] => Array ([id] => 29)) 

我如何可以使用in_array PHP函数只检查ID?

OR

我怎样才能建立一个普通数组只是存储类似

$demo = array(); 
foreach($recs as $r) 
$demo = array($r->id); 

任何建议ID?

+3

如何从数据库'WHERE ID = 124'选择? – deceze 2012-08-13 07:35:00

+0

nooo,有一个我需要选择的ID列表,然后检查 – 2012-08-13 07:42:32

+1

我认为这个http://stackoverflow.com/questions/4128323/in-array-and-multidimensional-array 会帮助你 – WatsMyName 2012-08-13 07:45:00

回答

1

您可以循环结果集并生成一个新数组并使用它。以下是这可能是有用的

$i=0; 
foreach($reccs->result_array() as $values) 
{ 
$new_array[]=$values[$i]['id']; 
$i++; 
} 

化妆用的$ new_array为in_array对比代码

0

您可以使用array_map()从每个子阵列中拔出该密钥。然后,in_array()将按正常工作。

$found = in_array(124, 
        array_map(function($val) { return $val['id']; }, 
          $returned_array 
       ) 
     ); 

如果您没有> = PHP 5.3,则将匿名函数替换为指定的函数。

+0

,这并不适合我 – 2012-08-13 07:38:39

+0

@ user1537158你有错误吗? – alex 2012-08-13 07:39:11

+0

是的我的IDE说,它不兼容 – 2012-08-13 07:39:51

2

如果你想检查用户是否存在,你应该进行计数查询。

$this->db->where('id',124); 
$count = $this->db->count_all_results('users'); 

if($count) { 
// found 
} else { 
// not found 
} 
+0

noo,这是完全错误的,在描述中的124只是一个实例,我想检查一个列表的用户ID – 2012-08-13 07:43:33

1

由于其它评论说,有更好的方法可以做到这一点,但你坚持做这样的,只是变换ID到一个数组相匹配的结果数组结构:

in_array(array('id' => 124),$returned_array)