Php 按值合并两个多维数组
我试图用一个公共值合并两个数组(它们来自mysql查询),但不幸的是,到目前为止运气不佳 基本上,我有两个独立的数组,正如你在下面看到的,第一个叫做$step1,第二个叫做$step2Php 按值合并两个多维数组,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,我试图用一个公共值合并两个数组(它们来自mysql查询),但不幸的是,到目前为止运气不佳 基本上,我有两个独立的数组,正如你在下面看到的,第一个叫做$step1,第二个叫做$step2 Array ( [0] => Array ( [0] => 4 [inventory_id] => 4 [1] => 13 [box] => 13 [2] => 4 [win
Array
(
[0] => Array
(
[0] => 4
[inventory_id] => 4
[1] => 13
[box] => 13
[2] => 4
[wine_id] =>
[3] => 34
[quantity] => 34
[4] => xx@googlemail.com
[email] => xx@googlemail.com
)
[1] => Array
(
[0] => 9
[inventory_id] => 9
[1] => 0
[box] => 0
[2] => 17672
[wine_id] =>
[3] => 538
[quantity] => 538
[4] => xx@googlemail.com
[email] => xx@googlemail.com
)
)
Array
(
[0] => Array
(
[0] => 4
[wine_id] => 4
[1] => Ajaccio (CORSE)
[villesetregion] => Ajaccio (CORSE)
[2] => Ajaccio
[villes] => Ajaccio
[3] => (CORSE)
[regions] => (CORSE)
[4] => Clos d'Alzeto 2008
[nometannee] => Clos d'Alzeto 2008
[5] => Clos d'Alzeto
[nom] => Clos d'Alzeto
[6] => 2008
[annee] => 2008
[7] => 8 à 11 €
[prix] => 8 à 11 €
[8] => Guide 2010
[anneeduguide] => Guide 2010
[9] => 2
[etoile] => 2
)
[1] => Array
(
[0] => 17642
[wine_id] => 17642
[1] => Pauillac (BORDELAIS)
[villesetregion] => Pauillac (BORDELAIS)
[2] => Pauillac
[villes] => Pauillac
[3] => (BORDELAIS)
[regions] => (BORDELAIS)
[4] => Chateau Latour 2007
[nometannee] => Chateau Latour 2007
[5] => Chateau Latour
[nom] => Chateau Latour
[6] => 2007
[annee] => 2007
[7] => 75 à 100 €
[prix] => 75 à 100 €
[8] => Guide 2011
[anneeduguide] => Guide 2011
[9] => 2
[etoile] => 2
)
)
mysql中的查询如下:
$step1 :
$query2 = "SELECT* FROM `inventory_users` WHERE email='".$email_user."'";
$step2 :
$query3 = "SELECT * FROM `vins_tbl` WHERE wine_id IN (".implode(',', $wine).")";
库存用户的数据库结构为:
对于vins_tb:
我想通过wine_id键合并这两个数组,怎么做
谢谢你的帮助 虽然我同意您应该在查询中而不是在PHP中加入它们的意见(假设您的情况下可能),但这里有一个简单的方法来加入数组
$array1 = array(
array(
'id' => 1,
'name' => 'John'
),
array(
'id' => 2,
'name' => 'Bob'
)
);
$array2 = array(
array(
'id' => 1,
'money' => 3000
),
array(
'id' => 2,
'money' => 5000
),
);
foreach($array1 as $part1){
$found = false;
foreach($array2 as $part2){
if($part1['id'] == $part2['id']){
$found = true;
break;
}
}
if($found){
$part[] = $part1 + $part2;
}
}
var_dump($part);
如果您有任何问题,甚至是关于SQL join语句(在Select中)的问题
请随时提问。您可以通过以下方式在mySQL查询中直接连接值:
$query = "SELECT *
FROM inventory_users
LEFT JOIN vins_tbl
ON inventory_users.wine.id = vins_tbl.wine_id
WHERE email='{$email_user}'
";
我使用LEFT-JOIN
,它也将检索库存用户
,而不使用任何vins\u tbl.wine\u id
,但是-因为可能不是您的情况-您可以用简单的JOIN
替换LEFT-JOIN
(或者内部JOIN
,它们是别名)
此外,我还看到您的数组既有数字键也有关联键:如果您使用PDO驱动程序,则可以执行->fetchAll(PDO::FETCH_ASSOC)
以仅具有关联键
请注意:我没有测试过该查询,因此-如果它不能正常工作-请随时发表评论
- 阅读更多关于
wine\u id
显示为空。。。我还想要一个“城堡拉图”…是的,它们来自mysql查询你能编辑显示数据库结构和查询的问题吗?因为是的,可以加入数组,但是可以更有效地更改查询。非常感谢!用PHP解决这个问题浪费了太多的时间,而用SQL解决这个问题太容易了!!谢谢您的回答,我选择了SQL join语句。
$array1 = array(
array(
'id' => 1,
'name' => 'John'
),
array(
'id' => 2,
'name' => 'Bob'
)
);
$array2 = array(
array(
'id' => 1,
'money' => 3000
),
array(
'id' => 2,
'money' => 5000
),
);
foreach($array1 as $part1){
$found = false;
foreach($array2 as $part2){
if($part1['id'] == $part2['id']){
$found = true;
break;
}
}
if($found){
$part[] = $part1 + $part2;
}
}
var_dump($part);
$query = "SELECT *
FROM inventory_users
LEFT JOIN vins_tbl
ON inventory_users.wine.id = vins_tbl.wine_id
WHERE email='{$email_user}'
";