【问题标题】:Printing a php multidimensional array打印一个php多维数组
【发布时间】:2015-09-07 21:04:57
【问题描述】:

我正在尝试打印一个数组。

第一个例子。

$result2 = mysql_query("SELECT 
ps_product_attribute.id_product_attribute AS attribute_id, 
ps_advanced_attributes.pack_product_id AS base_product, 
ps_advanced_attributes.pack_product_qty AS qty_base_product, 
ps_stock_available.quantity AS base_product_on_hand, 
FLOOR(ps_stock_available.quantity / ps_advanced_attributes.pack_product_qty) AS available_to_customer 
FROM ps_product_attribute 
JOIN ps_advanced_attributes ON ps_advanced_attributes.attribute_id = ps_product_attribute.id_product_attribute 
JOIN ps_stock_available ON ps_stock_available.id_product = ps_advanced_attributes.pack_product_id 
ORDER BY ps_product_attribute.id_product_attribute ASC, ps_stock_available.quantity DESC");

echo '<pre>';   
WHILE($db_field2 = mysql_fetch_array($result2)){
print_r($db_field2);}
echo  '</pre>';

给出这个结果...

Array(
    [0] => 6703
    [attribute_id] => 6703
    [1] => 382
    [base_product] => 382
    [2] => 1
    [qty_base_product] => 1
    [3] => 69
    [base_product_on_hand] => 69
    [4] => 69
    [available_to_customer] => 69
)

只有这一个结果

示例 2...

$result2 = mysql_query("SELECT 
ps_product_attribute.id_product_attribute AS attribute_id, 
ps_advanced_attributes.pack_product_id AS base_product, 
ps_advanced_attributes.pack_product_qty AS qty_base_product, 
ps_stock_available.quantity AS base_product_on_hand, 
FLOOR(ps_stock_available.quantity / ps_advanced_attributes.pack_product_qty) AS available_to_customer 
FROM ps_product_attribute 
JOIN ps_advanced_attributes ON ps_advanced_attributes.attribute_id = ps_product_attribute.id_product_attribute 
JOIN ps_stock_available ON ps_stock_available.id_product = ps_advanced_attributes.pack_product_id 
ORDER BY ps_product_attribute.id_product_attribute ASC, ps_stock_available.quantity DESC");

echo '<pre>';   
WHILE($db_field2 = mysql_fetch_array($result2)){
print_r($db_field2);}
echo  '</pre>';

得到这个结果...

Array

(

    [0] => 6703
    [attribute_id] => 6703
    [1] => 382
    [base_product] => 382
    [2] => 1
    [qty_base_product] => 1
    [3] => 69
    [base_product_on_hand] => 69
    [4] => 69
    [available_to_customer] => 69
)

Array

(

    [0] => 6703
    [attribute_id] => 6703
    [1] => 103
    [base_product] => 103
    [2] => 1
    [qty_base_product] => 1
    [3] => 4
    [base_product_on_hand] => 4
    [4] => 4
    [available_to_customer] => 4
)
Array
(

    [0] => 6703
    [attribute_id] => 6703
    [1] => 471
    [base_product] => 471
    [2] => 1
    [qty_base_product] => 1
    [3] => 0
    [base_product_on_hand] => 0
    [4] => 0
    [available_to_customer] => 0
)
Array
(

    [0] => 6704
    [attribute_id] => 6704
    [1] => 103
    [base_product] => 103
    [2] => 1
    [qty_base_product] => 1
    [3] => 4
    [base_product_on_hand] => 4
    [4] => 4
    [available_to_customer] => 4
)
Array
(

    [0] => 6704
    [attribute_id] => 6704
    [1] => 397
    [base_product] => 397
    [2] => 1
    [qty_base_product] => 1
    [3] => 0
    [base_product_on_hand] => 0
    [4] => 0
    [available_to_customer] => 0
)
Array
(

    [0] => 6704
    [attribute_id] => 6704
    [1] => 465
    [base_product] => 465
    [2] => 1
    [qty_base_product] => 1
    [3] => 0
    [base_product_on_hand] => 0
    [4] => 0
    [available_to_customer] => 0
)
Array
(

    [0] => 6705
    [attribute_id] => 6705
    [1] => 103
    [base_product] => 103
    [2] => 1
    [qty_base_product] => 1
    [3] => 4
    [base_product_on_hand] => 4
    [4] => 4
    [available_to_customer] => 4
)
Array
(

    [0] => 6705
    [attribute_id] => 6705
    [1] => 533
    [base_product] => 533
    [2] => 1
    [qty_base_product] => 1
    [3] => 2
    [base_product_on_hand] => 2
    [4] => 2
    [available_to_customer] => 2
)
Array
(

    [0] => 6705
    [attribute_id] => 6705
    [1] => 469
    [base_product] => 469
    [2] => 1
    [qty_base_product] => 1
    [3] => 0
    [base_product_on_hand] => 0
    [4] => 0
    [available_to_customer] => 0
)
Array
(

    [0] => 6706
    [attribute_id] => 6706
    [1] => 395
    [base_product] => 395
    [2] => 1
    [qty_base_product] => 1
    [3] => 41
    [base_product_on_hand] => 41
    [4] => 41
    [available_to_customer] => 41
)
Array
(

    [0] => 6706
    [attribute_id] => 6706
    [1] => 103
    [base_product] => 103
    [2] => 1
    [qty_base_product] => 1
    [3] => 4
    [base_product_on_hand] => 4
    [4] => 4
    [available_to_customer] => 4
)

Array
(

    [0] => 6706
    [attribute_id] => 6706
    [1] => 468
    [base_product] => 468
    [2] => 1
    [qty_base_product] => 1
    [3] => 0
    [base_product_on_hand] => 0
    [4] => 0
    [available_to_customer] => 0
)

如您所见,有很多结果,但并不完全符合我的预期。在这两个示例中,我都得到了重复的数据。

我在这里做错了吗?我认为第一个示例应该打印了数组的全部内容。

【问题讨论】:

  • 您是说查询我们错误还是显示错误?我不清楚有什么问题

标签: php arrays printing


【解决方案1】:

您应该首先将所有结果提取到数组中,然后再打印它

$result = [];
while ($row = mysql_fetch_assoc($result2)){
    $result[] = $row;
} 
print_r($result);

UPD:要删除重复数据,请使用 mysql_fetch_assoc 而不是 mysql_fetch_array

UPD2:考虑使用 mysqli 扩展而不是 mysql。 PHP.net

【讨论】:

  • 谢谢,这解决了第一个问题。关于摆脱重复数据的任何想法?
  • 谢谢,解决了主要问题。关于如何摆脱重复数据数组的任何想法( [0] => 6703 [attribute_id] => 6703 [1] => 103 [base_product] => 103 [2] => 1 [qty_base_product] => 1 [3 ] => 4 [base_product_on_hand] => 4 [4] => 4 [available_to_customer] => 4)
  • @Coathanger 将 mysql_fetch_array 替换为 mysql_fetch_assoc
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-13
  • 2021-07-19
  • 2013-02-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多