PHP / Mysql使用现有数组中的值创建一个新数组,求助?

时间:2011-07-06 09:36:49

标签: php mysql arrays

我目前有以下数组,

Array (1)
0 => Array (5)
  productid => 1
  qty => 1
  materialid => 12

我有以下两个查询

select name as productname, price from products where productid=1

select name from materials where materialid=12

我需要链接这些查询,以便数组输出是这样或类似的:

Array (1)
0 => Array (5)
  productid => 1
  qty => 1
  materialid => 12
  productname => Toothbrush
  price => £3.00

这基本上是将内容输出到一个篮子页面。请注意,由于两个表上没有任何连接,因此无法连接查询。

由于

4 个答案:

答案 0 :(得分:1)

运行第一个查询,将数据作为键控数组。运行第二个查询,同时将数据作为键控数组。然后组合两个数组:

$data1 = query_data($sql1);
$data2 = query_data($sql2);
$result = array($data1 + $data2);

将为您提供一个结果,该结果是一个包含单个数组的数组,其中包含$data1$data2的所有值。 $data2中的重复密钥不会覆盖来自$data1的密钥。请参阅Array Operators in the PHP Manual

类似的函数是array_merge(),它也会创建一个数组中的一个数组。

答案 1 :(得分:0)

您从哪里获取数据以填充初始数组?它是否始终具有单个值(如果是这样,您可以在单个查询中使用笛卡尔连接以避免两次访问数据库)。为什么数据表之间的关系没有在数据库中描述?

将数组中的值拼接到查询中,无论是文字还是绑定参数都是微不足道的。这是什么问题?

答案 2 :(得分:0)

您也可以同时查询这两个表:

select p.name as productname, m.name as materialname, p.price
    from products p, materials m
    where p.productid=1 and materialid=12

答案 3 :(得分:0)

您可以单独运行查询:

$res1 = mysql_query(Qry1); 
$res2 = mysql_query(Qry2);

$data1 = mysql_fetch_array($res1);
$data2 = mysql_fetch_array($res2);

$res = array_merge_recursive($data1, $data2);