如何通过PHP推送数组中的键和值?

时间:2014-06-13 10:15:02

标签: php

我有一个像这样的SQL查询

SELECT wp_woocommerce_order_items.order_item_name, wp_woocommerce_order_itemmeta.meta_value FROM wp_woocommerce_order_items INNER JOIN wp_woocommerce_order_itemmeta ON wp_woocommerce_order_items.order_item_id=wp_woocommerce_order_itemmeta.order_item_id WHERE wp_woocommerce_order_items.order_item_type = 'line_item' AND wp_woocommerce_order_itemmeta.meta_key='_qty' AND wp_woocommerce_order_items.order_id=1477

现在这个查询给了我两个这样的结果

order_item_name                     meta_value
Handicap Accessible Porta Potty         1
Sani Stand Handwashing Station          1

我希望用密钥将其推送到数组中。

我尝试使用此代码进行推送

while ($row2 = mysql_fetch_array($item_name)) {
    $order_items['name'] = $row2['order_item_name'];
    $order_items['quantity'] = $row2['meta_value'];
}

但是上面的代码只推送一个元素。 请帮忙

2 个答案:

答案 0 :(得分:2)

你可以做以下两件事之一:

将数组的每个元素放入另一个数组中:

while ($row2 = mysql_fetch_array($item_name)) {
    $order_items[] = array('name' => $row2['order_item_name'],'quantity' => $row2['meta_value']);
}

或者简单地将其设为二维数组,将每个值推送到数字字段中:

while ($row2 = mysql_fetch_array($item_name)) {
    $order_items['name'][] = $row2['order_item_name'];
    $order_items['quantity'][] = $row2['meta_value'];
}

第一种方法将产生以下结构:

array(
[0] = array(
    name => name1,
    quantity => qty1),
[1] = array(
    name => name2,
    quantity => qty2)
)

虽然第二种方法会给你这样的东西:

array(
[name] = array(
    [0] => name1,
    [1] => name2
    ),
[quantity] = array(
    [0] => qty1,
    [1] => qty2
    )
);

这实际上取决于你以后想要做什么以及如何做。

答案 1 :(得分:1)

首先,像这样编写查询,以便在SQL结果集中完成字段映射:

SELECT wp_woocommerce_order_items.order_item_name name, wp_woocommerce_order_itemmeta.meta_value quantity
FROM wp_woocommerce_order_items 
INNER JOIN wp_woocommerce_order_itemmeta ON wp_woocommerce_order_items.order_item_id=wp_woocommerce_order_itemmeta.order_item_id 
WHERE wp_woocommerce_order_items.order_item_type = 'line_item' AND wp_woocommerce_order_itemmeta.meta_key='_qty' AND wp_woocommerce_order_items.order_id=1477

然后,构建数组:

$values = [];
while (($row = mysql_fetch_assoc($item_name)) !== false) {
    $values[] = $row;
}

如果要构建键值数组(在这种情况下,字段映射不太重要):

$values = [];
while (($row = mysql_fetch_assoc($item_name)) !== false) {
    $values[$row['name']] = $row['quantity'];
}