Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 按值合并两个多维数组_Php_Arrays_Multidimensional Array - Fatal编程技术网

Php 按值合并两个多维数组

Php 按值合并两个多维数组,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

我试图用一个公共值合并两个数组(它们来自mysql查询),但不幸的是,到目前为止运气不佳

基本上,我有两个独立的数组,正如你在下面看到的,第一个叫做$step1,第二个叫做$step2

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)
以仅具有关联键

请注意:我没有测试过该查询,因此-如果它不能正常工作-请随时发表评论


  • 阅读更多关于

1)这些数组来自mysql查询?2) 在您的第一个数组中,
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}'
";