1

メンバーこんにちは、コードイグナイターの異常に気づきました

私のモデルでは、データベースにクエリを実行して user_id のみのリストを取得します

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

簡単だったけど、結果を配列で返したい

私もです

$reccs->result_array();

しかし今、コントローラーで in_array(124,$returned_array); をチェックしたい codeigniter が id の配列を av 大きな外部配列にカプセル化したため、これは成功しません。

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

in_array php 関数を使用して id のみをチェックするにはどうすればよいですか?

また

次のようなIDを格納するためだけにプレーン配列を作成するにはどうすればよいですか

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

助言がありますか ?

4

4 に答える 4

2

ユーザーがそこにいるかどうかを確認したい場合は、count クエリを作成する必要があります。

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

if($count) {
// found
} else {
// not found
}
于 2012-08-13T07:42:41.710 に答える
1

As the other comments are saying, there are better ways to do this but as you insist to do it like this, just transform the id into an array to match the result array structure:

in_array(array('id' => 124),$returned_array)
于 2012-08-13T07:47:37.930 に答える
1

結果セットをループして新しい配列を生成し、それを利用できます。以下は役に立つかもしれないコードです

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

in_array 比較に $new_array を利用する

于 2012-08-13T09:34:06.897 に答える
0

各サブ配列からそのキーarray_map()取り出すために使用できます。その後、in_array()通常どおりに動作します。

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

>= PHP 5.3 を使用していない場合は、無名関数を名前付き関数に置き換えます。

于 2012-08-13T07:33:55.360 に答える