从多个表构建多维数组

时间:2014-02-27 21:14:13

标签: php sql arrays joomla foreach

我试图在单个阵列上构建一个多维数组...请让我解释一下。
我有一个非常基本的查询如下。

$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query
    ->select('o.*, u.*, i.*')
    ->from($db->quoteName('#__redshop_orders', 'o'))
    ->join('LEFT', $db->quoteName('#__redshop_users_info', 'u').' ON (' . $db->quoteName('u.users_info_id') .' = '. $db->quoteName('o.user_info_id').')')
    ->join('INNER', $db->quoteName('#__redshop_order_item', 'i') . ' ON (' . $db->quoteName('i.order_id') . ' = ' . $db->quoteName('o.order_id') . ')')
     ->where($db->quoteName('o.order_number') . ' LIKE '. $db->quote($o_id) .'');
$db->setQuery($query);
$results = $db->loadObjectList();

每个订单将输出一个$ key,比如用户将显示3个订单

array (
[0] => array ( 'id 1', 'data42')
[1] => array ( 'id 1', 'data26')
[2] => array ( 'id 1', 'data27')
)

这个想法是制作一个多维数组,如下所示

array (
[id1] => array (
                      [user 1] => array ( 
                                                 [order 1] => ( array => [item 1] => 2, [item 2] => 3 )
                                              )
                     )
)
换言之......

[user 1]
        [order id 1]
                    [items 1]
                    [items 2]
                    [items 3]
        [order id 2]
                    [items 15]
                    [items 25]
                    [items 33]
[user 2]
        [order id 46]
                    [items 1]
                    [items 2]
                    [items 3]
        [order id 25]
                    [items 15]
                    [items 25]
                    [items 33]

这种类型的阵列是我正在寻找的,因为我很难建立这个阵列...
现在,该查询显示我想要的所有信息,而不是我需要的方式

我还为用户做了3个其他查询1,订单1个,项目1个,但我不知道怎么把它放在一起......

可以用来相互关联的ID是

order_id位于订单表中的用户表user_id和订单表中的item_id ...

我正在使用这个foreach把它们放在一起但是没有工作......

$user = array();
$order = array();
$items = array();
foreach ($results as $user) {
    $id = $user->order_id;
    $user->orders = array();
    $order[$id] = $user;

    if ($user->order_id == 0) {
        $user[$id] = & $orders[$id];
    }

    foreach ($order as $id => & $node) {
        if (isset($order[$node->order_id])) {
            $order[$node->order_id]->children[$id] = $node;
        }
    }
}

print_r($user);

但是没有用......

这是我需要使用的数组作为示例...

Array
(
    [0] => stdClass Object
        (
            [order_id] => 3
            [user_id] => 374
            [order_number] => 3
            [barcode] => 
            [user_info_id] => 1
            [order_total] => 594.00
            [order_subtotal] => 394.00000
            [order_tax] => 0.00
            [order_tax_details] => 
            [order_shipping] => 200.00
            [order_shipping_tax] => 0.00
            [coupon_discount] => 0.00
            [order_discount] => 0.00
            [special_discount_amount] => 0.00
            [payment_dicount] => 0.00
            [order_status] => P
            [order_payment_status] => Partial Paid
            [cdate] => 1393522811
            [mdate] => 1393522811
            [ship_method_id] => g7aKj0A==
            [customer_note] => 
            [ip_address] => 127.0.0.1
            [encr_key] => 0k61
            [split_payment] => 0
            [invoice_no] => 
            [mail1_status] => 0
            [mail2_status] => 0
            [mail3_status] => 0
            [special_discount] => 0.00
            [payment_discount] => 0.00
            [is_booked] => 0
            [order_label_create] => 0
            [vm_order_number] => 
            [requisition_number] => 
            [bookinvoice_number] => 0
            [bookinvoice_date] => 0
            [referral_code] => 
            [customer_message] => 
            [shop_id] => 
            [order_discount_vat] => 0.000
            [track_no] => 
            [payment_oprand] => -
            [discount_type] => 
            [analytics_status] => 0
            [tax_after_discount] => 0.000
            [recuuring_subcription_id] => 
            [users_info_id] => 1
            [user_email] => fake@emaisl.com
            [address_type] => BT
            [firstname] => Chychy
            [lastname] => Hush
            [vat_number] => 
            [tax_exempt] => 0
            [shopper_group_id] => 1
            [country_code] => USD
            [address] => The address #2
            [city] => Basds
            [state_code] => 
            [zipcode] => 01000
            [phone] => 1234569875
            [tax_exempt_approved] => 0
            [approved] => 0
            [is_company] => 0
            [ean_number] => 
            [braintree_vault_number] => 
            [veis_vat_number] => 
            [veis_status] => 
            [company_name] => 
            [requesting_tax_exempt] => 0
            [accept_terms_conditions] => 0
            [order_item_id] => 3
            [supplier_id] => 0
            [product_id] => 15
            [order_item_sku] => 139-1310-1
            [order_item_name] => Soe other names items 3
            [product_quantity] => 2
            [product_item_price] => 10.0000
            [product_item_price_excl_vat] => 10.0000
            [product_final_price] => 20.0000
            [order_item_currency] => $ 
            [product_attribute] => 
            [product_accessory] => 
            [delivery_time] => 0
            [container_id] => 0
            [stockroom_id] => 1
            [stockroom_quantity] => 2
            [is_split] => 0
            [attribute_image] => 
            [wrapper_id] => 0
            [wrapper_price] => 0.00
            [is_giftcard] => 0
            [giftcard_user_name] => 
            [giftcard_user_email] => 
            [product_item_old_price] => 0.0000
            [product_purchase_price] => 0.0000
            [discount_calc_data] => 
        )

    [1] => stdClass Object
        (
            [order_id] => 3
            [user_id] => 374
            [order_number] => 3
            [barcode] => 
            [user_info_id] => 1
            [order_total] => 594.00
            [order_subtotal] => 394.00000
            [order_tax] => 0.00
            [order_tax_details] => 
            [order_shipping] => 200.00
            [order_shipping_tax] => 0.00
            [coupon_discount] => 0.00
            [order_discount] => 0.00
            [special_discount_amount] => 0.00
            [payment_dicount] => 0.00
            [order_status] => P
            [order_payment_status] => Partial Paid
            [cdate] => 1393522811
            [mdate] => 1393522811
            [ship_method_id] => Adflvra tr6g7aKj0A==
            [customer_note] => 
            [ip_address] => 127.0.0.1
            [encr_key] => 0e90k61
            [split_payment] => 0
            [invoice_no] => 
            [mail1_status] => 0
            [mail2_status] => 0
            [mail3_status] => 0
            [special_discount] => 0.00
            [payment_discount] => 0.00
            [is_booked] => 0
            [order_label_create] => 0
            [vm_order_number] => 
            [requisition_number] => 
            [bookinvoice_number] => 0
            [bookinvoice_date] => 0
            [referral_code] => 
            [customer_message] => 
            [shop_id] => 
            [order_discount_vat] => 0.000
            [track_no] => 
            [payment_oprand] => -
            [discount_type] => 
            [analytics_status] => 0
            [tax_after_discount] => 0.000
            [recuuring_subcription_id] => 
            [users_info_id] => 1
            [user_email] => fake@emaisl.com
            [address_type] => BT
             [firstname] => Chychy
            [lastname] => Hush
            [vat_number] => 
            [tax_exempt] => 0
            [shopper_group_id] => 1
            [country_code] => USD
            [address] => The address #2
            [city] => Basds
            [state_code] => 
            [zipcode] => 01000
            [phone] => 1234569875
            [tax_exempt_approved] => 0
            [approved] => 0
            [is_company] => 0
            [ean_number] => 
            [braintree_vault_number] => 
            [veis_vat_number] => 
            [veis_status] => 
            [company_name] => 
            [requesting_tax_exempt] => 0
            [accept_terms_conditions] => 0
            [order_item_id] => 4
            [supplier_id] => 0
            [product_id] => 6
            [order_item_sku] => 139-2011-DS-1
            [order_item_name] => Name 3 for prod
            [product_quantity] => 3
            [product_item_price] => 80.0000
            [product_item_price_excl_vat] => 80.0000
            [product_final_price] => 240.0000
            [order_item_currency] => $ 
            [product_attribute] => 
            [product_accessory] => 
            [delivery_time] => 0
            [container_id] => 0
            [stockroom_id] => 1
            [stockroom_quantity] => 3
            [is_split] => 0
            [attribute_image] => 
            [wrapper_id] => 0
            [wrapper_price] => 0.00
            [is_giftcard] => 0
            [giftcard_user_name] => 
            [giftcard_user_email] => 
            [product_item_old_price] => 0.0000
            [product_purchase_price] => 0.0000
            [discount_calc_data] => 
        )

    [2] => stdClass Object
        (
            [order_id] => 3
            [user_id] => 374
            [order_number] => 3
            [barcode] => 
            [user_info_id] => 1
            [order_total] => 594.00
            [order_subtotal] => 394.00000
            [order_tax] => 0.00
            [order_tax_details] => 
            [order_shipping] => 200.00
            [order_shipping_tax] => 0.00
            [coupon_discount] => 0.00
            [order_discount] => 0.00
            [special_discount_amount] => 0.00
            [payment_dicount] => 0.00
            [order_status] => P
            [order_payment_status] => Partial Paid
            [cdate] => 1393522811
            [mdate] => 1393522811
            [ship_method_id] => v5amlvra tr6g7aKj0A==
            [customer_note] => 
            [ip_address] => 127.0.0.1
            [encr_key] => 0e01661
            [split_payment] => 0
            [invoice_no] => 
            [mail1_status] => 0
            [mail2_status] => 0
            [mail3_status] => 0
            [special_discount] => 0.00
            [payment_discount] => 0.00
            [is_booked] => 0
            [order_label_create] => 0
            [vm_order_number] => 
            [requisition_number] => 
            [bookinvoice_number] => 0
            [bookinvoice_date] => 0
            [referral_code] => 
            [customer_message] => 
            [shop_id] => 
            [order_discount_vat] => 0.000
            [track_no] => 
            [payment_oprand] => -
            [discount_type] => 
            [analytics_status] => 0
            [tax_after_discount] => 0.000
            [recuuring_subcription_id] => 
            [users_info_id] => 1
            [user_email] => fake@emaisl.com 
            [address_type] => BT
            [firstname] => Chychy
            [lastname] => Hush
            [vat_number] => 
            [tax_exempt] => 0
            [shopper_group_id] => 1
            [country_code] => USD
            [address] => The address #2
            [city] => Basds
            [state_code] => 
            [zipcode] => 01000
            [phone] => 1234569875
            [tax_exempt_approved] => 0
            [approved] => 0
            [is_company] => 0
            [ean_number] => 
            [braintree_vault_number] => 
            [veis_vat_number] => 
            [veis_status] => 
            [company_name] => 
            [requesting_tax_exempt] => 0
            [accept_terms_conditions] => 0
            [order_item_id] => 5
            [supplier_id] => 0
            [product_id] => 49
            [order_item_sku] => 150-1017-0
            [order_item_name] => Poducs names 1
            [product_quantity] => 2
            [product_item_price] => 67.0000
            [product_item_price_excl_vat] => 67.0000
            [product_final_price] => 134.0000
            [order_item_currency] => $ 
            [product_attribute] => 
            [product_accessory] => 
            [delivery_time] => 0
            [container_id] => 0
            [stockroom_id] => 
            [stockroom_quantity] => 
            [is_split] => 0
            [attribute_image] => 
            [wrapper_id] => 0
            [wrapper_price] => 0.00
            [is_giftcard] => 0
            [giftcard_user_name] => 
            [giftcard_user_email] => 
            [product_item_old_price] => 0.0000
            [product_purchase_price] => 0.0000
            [discount_calc_data] => 
        )

)

这就是我的查询输出的内容....订单中有1个用户1个订单3项...

感谢您抽出宝贵的时间......

0 个答案:

没有答案