数据来自2个不同的SQL请求,所以我有2个数组,如:
FIRST ARRAY
array(6) {
[0]=>
array(2) {
["edible"]=>
string(3) "600"
["Food"]=>
string(4) "Fruit"
}
[1]=>
array(2) {
["edible"]=>
string(3) "500"
["Food"]=>
string(6) "Vegetables"
}
[2]=>
array(2) {
["edible"]=>
string(4) "1000"
["Food"]=>
string(3) "meat"
}
...
SECOND ARRAY
array(5) {
[0]=>
array(2) {
["out-of-date"]=>
string(3) "17"
["Food"]=>
string(4) "Fruit"
}
[1]=>
array(2) {
["out-of-date"]=>
string(3) "54"
["Food"]=>
string(3) "Vegetables"
}
[2]=>
array(2) {
["out-of-date"]=>
string(2) "60"
["Food"]=>
string(3) "meat"
}
...
我想要的是合并两个数组,但不能使用像 array_merge 或 array_merge_recursive 这样的函数。 因为我想添加一行(键+值),如
["out-of-date"]=>
string(3) "17""
如果我们有相同的食物(关键),则在第一个数组中
所需的输出结果:
array(6) {
[0]=>
array(3) {
["out-of-date"]=>
string(3) "17"
["edible"]=>
string(3) "600"
["Food"]=>
string(4) "Fruit"
}
...
答案 0 :(得分:1)
你需要在循环内部进行循环并验证食物键,如果相等则将值合并到另一个数组,请尝试以下代码:
<?php
$array1 = array();
$array1[] = array('food' => 'Fruit', 'edible' => '600');
$array1[] = array('food' => 'Vegetables', 'edible' => '500');
$array1[] = array('food' => 'meat', 'edible' => '700');
$array2 = array();
$array2[] = array('food' => 'Fruit', 'out-of-date' => '17');
$array2[] = array('food' => 'Vegetables', 'out-of-date' => '15');
$array_merged = array();
foreach ($array1 as $key => $value) {
$array_merged[$key] = $value;
foreach ($array2 as $ke => $val) {
if ($val['food'] == $value['food']) {
$array_merged[$key]['out-of-date'] = $val['out-of-date'];
}
}
}
print_r($array_merged);
答案 1 :(得分:1)
我不确定数据库表的结构。但是,让我们在MySql数据库中有两个表:
首先 - 食用|食品
第二 - out_of_date |食品
因此,您可以使用join mysql操作查询数组。你需要sql如下:
SELECT *
FROM First
LEFT JOIN Second ON First.Food=Second.Food
此外,您可以对所有表使用其他条件,例如:
SELECT *
FROM First
LEFT JOIN Second ON First.Food=Second.Food
WHERE First.edible = 1000 AND Second.out_of_date = 10
您可以在此处找到更多信息:http://dev.mysql.com/doc/refman/5.7/en/join.html