如何在 Codeigniter/PHP 中合并两行并获取单个数组?

Posted

技术标签:

【中文标题】如何在 Codeigniter/PHP 中合并两行并获取单个数组?【英文标题】:How to merge two rows and get single array in Codeigniter/PHP? 【发布时间】:2017-09-10 16:53:40 【问题描述】:

我正在使用 Codeigniter 为单个用户分配多个角色。为此,我创建了一个包含以下值的表。

    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  |
+----+----+----+

我的桌子是这样的

我需要验证和获取单个数组。

【问题讨论】:

我很困惑。你是说customer_ref_id 193 既可以查看也可以不查看business_view? 这里我获取所有以customer_ref_id 为主要值的值以获取值,customer_ref_id 中的值数量将是n 我需要获取所有行其中包含 193。因此,我需要验证所有列。我所有行中的任何一个都包含我必须将输出设为 1。这可能吗? 对我来说,您的数据库设计似乎需要一些工作。但是,鉴于您现在所处的位置,最简单的方法可能是简单地收集所有相关行,然后在循环中运行它们,创建某种权限数组。您可以尝试使用 select_max 来获取最大值,但考虑到这么多列,这将是一个非常冗长的方法。 【参考方案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;
            
        
    

这只是我打出来的,所以没有测试它,可能有一些错字。希望能帮助到你。可能有更有效的方法可以做到这一点,但如果您只处理几行,那就没问题了。

【讨论】:

以上是关于如何在 Codeigniter/PHP 中合并两行并获取单个数组?的主要内容,如果未能解决你的问题,请参考以下文章

如何合并数据框熊猫中的两行

SQL条件列和合并两行。

如何从命令行将每两行合并为一行?

CodeIgniter / PHP:如何在 .php 视图页面中获取 URI

如何使用select合并postgres中的两行[重复]

jquery easyui datagrid 中 数据中某一列 进行两行或三行合并 如何实现