2017-04-14 15 views
0

私はCodeigniterを使用して、複数の役割を1人のユーザーに割り当てることに取り組んでいます。そのために、私は以下の値を持つテーブルを作成しました。Codeigniter/PHPで2行をマージして単一配列を取得する方法は?

Array 
(
    [Id] => 1 
    [Store_address_id] => 
    [Customer_ref_id] => 193 
    [Role_ref_id] => 1 
    [Email_alert] => 0 
    [Sms_alert] => 0 
    [Admin_view] => 0 
    [Admin_save] => 0 
    [Admin_delete] => 0 
    [Master_view] => 1 
    [Master_save] => 1 
    [Master_delete] => 1 
    [Business_view] => 0 
    [Business_save] => 0 
    [Business_delete] => 0 
    [Analytics_view] => 1 
    [Analytics_delete] => 1 
    [Analytics_save] => 1 
    [Promotion_view] => 1 
    [Promotion_save] => 1 
    [Promotion_delete] => 1 
) 

しかし、データベースに私はこの

+----+----+----+ 
| i/p|i/p | o/p| 
+----+----+----+ 
| 0 | 0 | 0 | 
+----+----+----+ 
| 1 | 1 | 1 | 
+----+----+----+ 
| 1 | 0 | 1 | 
+----+----+----+ 
| 0 | 1 | 1 | 
+----+----+----+ 

私の表は、この

MySqlTable

のようなものであるように検証して値を取得する必要があり、そのために複数の行を持っています1つの配列として検証して取得する必要があります。私のコメントに続いて

+0

私は混乱しています。あなたはcustomer_ref_idがbusiness_viewを表示したり表示したりすることができると言っていますか? – PaulD

+0

ここでは、値を取得するための第一の値として 'customer_ref_id'ですべての値を取得しています。' customer_ref_id'に 'n'個の値があり、193を含むすべての行を取得する必要があります。すべての列を検証する必要があります。私はいずれかの行のいずれかが含まれている私は1として出力を取得する必要がありますか? – Prashanth

+0

私にとっては、あなたのデータベース設計にはいくつかの作業が必要なようです。しかし、今どこにいるかを考えれば、すべての関連する行を単純に収集してループで実行して、ある種のパーミッション配列を作成するのが最も簡単かもしれません。 select_maxを使って最大値を取得しようとすることもできますが、非常に多くの列を指定すると、これは非常に長い時間がかかります。 – PaulD

答えて

1

は、私はあなたのコントローラでそれを行うには、このような何かを示唆するだろうと思った:

// set a permissions array and set to default values of 0 
$permissions = array(
    'Email_alert' => 0, 
    'Sms_alert' => 0, 
    'Admin_view' => 0, 
    'Admin_save' => 0, 
    'Admin_delete' => 0, 
    'Master_view' => 0, 
    'Master_save' => 0, 
    'Master_delete' => 0, 
    'Business_view' => 0, 
    'Business_save' => 0, 
    'Business_delete' => 0, 
    'Analytics_view' => 0, 
    'Analytics_delete' => 0, 
    'Analytics_save' => 0, 
    'Promotion_view' => 0, 
    'Promotion_save' => 0, 
    'Promotion_delete' => 0, 
); 

// get the rows 
foreach ($results as $row) { 
    // get each col name and value 
    foreach ($row as $key => $value) { 
     // make sure it is a value needed for the permissions array 
     if(isset($permissions[$key])) { 
      // this value is a permissions value, is it a 1 
      if ($value == 1) { 
       // set the permissions array to 1 
       $permissions[$key] = 1; 
      } 
     } 
    } 
} 

これはちょうど私はそれを入力しているので、それをテストしていないと、いくつかのタイプミスの可能性があります。それが役に立てば幸い。これを行うより効率的な方法があるかもしれませんが、あなたが数行しか扱っていない場合、これはうまくいくでしょう。

+0

良いです。高校生.. – Prashanth

関連する問題