【问题标题】:Array inside array from a database query来自数据库查询的数组内的数组
【发布时间】:2014-04-25 00:15:54
【问题描述】:

我有一张订单表 (tbl_orders)。

+------------------------------------------------+
|invoice        | productid | qty | currentPrice |
+------------------------------------------------+
|139813018020   | 35        | 4   | 199          |
|139813018020   | 43        | 1   | 329          |
|139813307433   | 22        | 4   | 399          |
|139813307433   | 15        | 1   | 150          |
|139813307477   | 63        | 1   | 499          |
+------------------------------------------------+

每一行将代表一个产品。 一个订单可能有一行或多行。

例如。发票139813018020 有 2 种不同的产品。 Product35product43,它们是两行。这是一个完整的订单

我正在使用这样的查询:

SELECT invoice, productID, qty, currentPrice FROM tbl_orders
return $query->result_array() // codeigniter

输出如下:

Array
(

[0] => Array
    (
        [invoice] => 139813018020
        [productID] => 35
        [qty] => 4
        [currentPrice] => 199
    )

[1] => Array
    (
        [invoice] => 139813018020
        [productID] => 43
        [qty] => 1
        [currentPrice] => 329
    )

[2] => Array
    (
        [invoice] => 139813307433
        [productID] => 22
        [qty] => 4
        [currentPrice] => 399
    )

[3] => Array
    (
        [invoice] => 139813307433
        [productID] => 15
        [qty] => 1
        [currentPrice] => 150
    )
[4] => Array
    (
        [invoice] => 139813307477
        [productID] => 63
        [qty] => 1
        [currentPrice] => 499
    )

)

我需要一个订单和该订单的产品

我需要数组看起来像这样或类似的东西:

Array
(

[0] => Array
    (
        139813018020 => Array 
        (
            [0] => Array
                (
                   [productID] => 35
                   [qty] => 4
                   [currentPrice] => 199
                )
            [1] => Array
                (
                   [productID] => 43
                   [qty] => 1
                   [currentPrice] => 329
                )

         )
    )
[1] => Array
    (
        139813018033 => Array 
        (
            [0] => Array
                (
                   [productID] => 22
                   [qty] => 4
                   [currentPrice] => 399
                )
            [1] => Array
                (
                   [productID] => 15
                   [qty] => 1
                   [currentPrice] => 150
                )

         )
    )

[2] => Array
    (
        139813018077 => Array 
        (
            [0] => Array
                (
                   [productID] => 63
                   [qty] => 1
                   [currentPrice] => 499
                )
         )
    )
)

我正在使用 php、mysqli 和 codeigniter。

【问题讨论】:

  • 我会选择不同的发票编号,然后循环遍历结果数组并查询产品 ID、数量和价格以获取一个发票编号

标签: php mysql sql arrays codeigniter


【解决方案1】:

一种方法是遍历您的数据库数组并构建一个新数组,其中键设置为invoice 数字。这样,每个发票编号键都会引用该发票中订购的产品数组。

请注意,与您所需的输出相比,以下方法的深度级别少了一级。根数组的键是发票编号,而不是 0 索引。

// get the array from your database
$arr=$query->result_array();

// initialize a new array
$newarr=array();

// loop through database array and add entries to new array
foreach ($arr as $entry) {
  $newarr[$entry['invoice']][] = array(
    'productID'    => $entry['productID'],
    'qty'          => $entry['qty'],
    'currentPrice' => $entry['currentPrice']
  );
}

// output new array
echo"<pre>".print_r($newarr,true)."</pre>";

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-25
    • 1970-01-01
    • 2015-11-20
    • 2017-09-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多