【问题标题】:create associative array from db results array using array row as index使用数组行作为索引从 db 结果数组创建关联数组
【发布时间】:2015-10-25 18:34:51
【问题描述】:

我创建了连接四个表的 db 查询,并在 codeigniter 的数组中返回以下结果。

Array
(
[results] => Array
    (
        [0] => stdClass Object
            (
                [slip_id] => 257
                [slip_num] => 32
                [project_no] => SWS153
                [client_id] => 1
                [dwg_id] => 1
                [user_id] => 1
                [issue_date] => 2015-10-25 15:00:32.000000
                [sws_dwg_no] => SWS153-100
                [client_dwg_no] => 
                [dwg_title] => Pipework Suction and  Discharge: General Arrangement
                [dwg_by] => 
                [dwg_rev] => D
                [dwg_date] => 2015-10-25 15:00:32
                [rev_id] => 143
                [clientName] => R
                [clientSurname] => C
                [clientCom] => Pumps and Valves (Pty.) Ltd.
                [id] => 1
                [email] => admin@domain.com
                [password] => 5f4dcc3b5aa765d61d8327deb882cf99
                [name] => Admin
                [lastname] => Admin
                [project_name] => Metalong Raw Water Pump Station
            )

            [1] => stdClass Object
            (
                [slip_id] => 258
                [slip_num] => 32
                [project_no] => SWS153
                [client_id] => 1
                [dwg_id] => 2
                [user_id] => 1
                [issue_date] => 2015-10-25 15:00:32.000000
                [sws_dwg_no] => SWS153-107
                [client_dwg_no] => 
                [dwg_title] => Pipework isolation valve chamber & surg vessel
                [dwg_by] => 
                [dwg_rev] => D
                [dwg_date] => 2015-10-25 15:00:32
                [rev_id] => 144
                [clientName] => R
                [clientSurname] => C
                [id] => 1
                [email] => admin@domain.com
                [password] => 5f4dcc3b5aa765d61d8327deb882cf99
                [name] => Admin
                [lastname] => Admin
                [project_name] => Metalong Raw Water Pump Station
            )

        [2] => stdClass Object
            (
                [slip_id] => 259
                [slip_num] => 32
                [project_no] => SWS153
                [client_id] => 1
                [dwg_id] => 3
                [user_id] => 1
                [issue_date] => 2015-10-25 15:00:32.000000
                [sws_dwg_no] => SWS153-112
                [client_dwg_no] => 
                [dwg_title] => Pipework discharge pipe pieces plan and details
                [dwg_by] => 
                [dwg_rev] => D
                [dwg_date] => 2015-10-25 15:00:32
                [rev_id] => 145
                [clientName] => R
                [clientSurname] => C
                [id] => 1
                [email] => admin@domain.com
                [password] => 5f4dcc3b5aa765d61d8327deb882cf99
                [name] => Admin
                [project_name] => Metalong Raw Water Pump Station
            )

        [3] => stdClass Object
            (
                [slip_id] => 260
                [slip_num] => 32
                [project_no] => SWS153
                [client_id] => 1
                [dwg_id] => 4
                [user_id] => 1
                [issue_date] => 2015-10-25 15:00:32.000000
                [sws_dwg_no] => SWS153-113
                [client_dwg_no] => 
                [dwg_title] => Pipework suction and discharge setting out layout
                [dwg_by] => 
                [dwg_rev] => D
                [dwg_date] => 2015-10-25 15:00:32
                [rev_id] => 146
                [clientName] => R
                [clientSurname] => C
                [id] => 1
                [email] => admin@domain.com
                [password] => 5f4dcc3b5aa765d61d8327deb882cf99
                [name] => Admin
                [project_name] => Metalong Raw Water Pump Station
            )

        [4] => stdClass Object
            (
                [slip_id] => 261
                [slip_num] => 32
                [project_no] => SWS153
                [client_id] => 3
                [dwg_id] => 1
                [user_id] => 1
                [issue_date] => 2015-10-25 15:00:32.000000
                [sws_dwg_no] => SWS153-100
                [client_dwg_no] => 
                [dwg_title] => Pipework Suction and  Discharge: General Arrangement
                [dwg_by] => 
                [dwg_rev] => D
                [dwg_date] => 2015-10-25 15:00:32
                [rev_id] => 143
                [clientName] => F
                [clientSurname] => N
                [id] => 1
                [email] => admin@domain.com
                [password] => 5f4dcc3b5aa765d61d8327deb882cf99
                [name] => Admin 
                [project_name] => Metalong Raw Water Pump Station
            )

        [5] => stdClass Object
            (
                [slip_id] => 262
                [slip_num] => 32
                [project_no] => SWS153
                [client_id] => 3
                [dwg_id] => 2
                [user_id] => 1
                [issue_date] => 2015-10-25 15:00:32.000000
                [sws_dwg_no] => SWS153-107
                [client_dwg_no] => 
                [dwg_title] => Pipework isolation valve chamber & surge vessel
                [dwg_by] => 
                [dwg_rev] => D
                [dwg_date] => 2015-10-25 15:00:32
                [rev_id] => 144
                [clientName] => F
                [clientSurname] => N
                [id] => 1
                [email] => admin@domain.com
                [password] => 5f4dcc3b5aa765d61d8327deb882cf99
                [name] => Admin
                [project_name] => Metalong Raw Water Pump Station
            )

        [6] => stdClass Object
            (
                [slip_id] => 263
                [slip_num] => 32
                [project_no] => SWS153
                [client_id] => 3
                [dwg_id] => 3
                [user_id] => 1
                [issue_date] => 2015-10-25 15:00:32.000000
                [sws_dwg_no] => SWS153-112
                [client_dwg_no] => 
                [dwg_title] => Pipework discharge pipe pieces plan and details
                [dwg_by] => 
                [dwg_rev] => D
                [dwg_date] => 2015-10-25 15:00:32
                [rev_id] => 145
                [clientName] => F
                [clientSurname] => N
                [id] => 1
                [email] => admin@domain.com
                [password] => 5f4dcc3b5aa765d61d8327deb882cf99
                [name] => Admin
                [project_name] => Metalong Raw Water Pump Station
            )

        [7] => stdClass Object
            (
                [slip_id] => 264
                [slip_num] => 32
                [project_no] => SWS153
                [client_id] => 3
                [dwg_id] => 4
                [user_id] => 1
                [issue_date] => 2015-10-25 15:00:32.000000
                [sws_dwg_no] => SWS153-113
                [client_dwg_no] => 
                [dwg_title] => Pipework suction and discharge setting out layout
                [dwg_by] => 
                [dwg_rev] => D
                [dwg_date] => 2015-10-25 15:00:32
                [rev_id] => 146
                [clientName] => F
                [clientSurname] => N
                [id] => 1
                [email] => admin@domain.com
                [password] => 5f4dcc3b5aa765d61d8327deb882cf99
                [name] => Admin
                [project_name] => Metalong Raw Water Pump Station
            )

    )

 )

我想使用 client_id 创建一个关联数组,这样我就可以将客户端的所有信息组合在一起并一起显示。这是为了制作收据。相同的文件可以发送给不同的客户,因此必须按客户显示收据。

我尝试创建一个 foreach 循环来重新组织数组。

【问题讨论】:

  • 那么你的问题是什么,你用 foreach 重新组织你的数组

标签: php mysql arrays codeigniter


【解决方案1】:

这会将结果分组到一个数组中,原始数组称为$arr:

$result = array();
foreach( $arr['results'] as $v ) {
    $result[$v->client_id][] = $v;
}

要获取单个客户端($client_id),所有结果都会像这样显示它们

foreach( $result[$client_id] as $res ) {
    // Use the data
    echo 'Slip: ' .  $res->slip_id . "<br />\n"
        . 'Title: ' . $res->dwg_title  . "<br />\n";
}

要显示由客户订购的所有内容,请执行以下操作:

foreach( $result as $client_id => $temp ) {
    echo 'Client_id: ' . $client_id . "<br />\n";
    foreach( $temp as $res ) {
        // Use the data
        echo 'Slip: ' .  $res->slip_id . "<br />\n"
            . 'Title: ' . $res->dwg_title  . "<br />\n";
    }
}

这是对您问题的回答吗?

Edit2 $res 是一个对象...

一种显示单个客户端的方式和一种显示所有客户端的方式!

【讨论】:

  • OP 要求一个关联数组,但这应该提供相同的结果
  • @Hasse 感谢您的帮助。您提供给我的代码的第一部分有效,并根据$client_id 给了我一个重新排列的数组。我正在努力将数组传递给我的视图。
  • 感谢您指出最后一部分有误。当然它是一个关联数组,而不是一个对象。我已经更新了脚本来显示这个!
  • @HasseBjörk 所以我已经尝试了更新的代码,但我一直遇到问题来显示它。我设法从上一个视图中获取了 $client_id 的 post 数组,我用它创建了一个 $client 数组并传递给 foreach($result[$client] as $res){...}。但我不断收到 Illegal offset type 错误。未修改的 Post 数组(客户端数组) - Array ( [1] =&gt; Array ( [client_id] =&gt; 1 ) [3] =&gt; Array ( [client_id] =&gt; 3 ) )
  • 你想对数据做什么?显示单个客户端还是显示所有客户端?
猜你喜欢
  • 2020-12-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-17
  • 1970-01-01
  • 2010-11-07
相关资源
最近更新 更多