Php 如何将一行数组插入到另一个数组中
数据来自2个不同的SQL请求,因此我有2个数组,如:Php 如何将一行数组插入到另一个数组中,php,arrays,Php,Arrays,数据来自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
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\u merge或array\u merge\u recursive这样的函数。
因为我只想添加一行(key+value),比如
在第一个数组中,如果我们有相同的食物(键)
所需的输出结果:
array(6) {
[0]=>
array(3) {
["out-of-date"]=>
string(3) "17"
["edible"]=>
string(3) "600"
["Food"]=>
string(4) "Fruit"
}
...
您需要在循环中创建一个循环并验证食物键,如果相等,请将值合并到另一个数组,请尝试以下代码:
<?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);
您需要在循环中创建一个循环并验证食物键,如果相等,请将值合并到另一个数组,请尝试以下代码:
<?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);
我不确定数据库表的结构。但让我们在MySql数据库中有两个表:
第一,可食用的食物
第二批过期食品
因此,您可以使用joinmysql操作查询您的数组。您需要如下所示的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
您可以在这里找到更多信息:我不确定数据库表的结构。但让我们在MySql数据库中有两个表:
第一,可食用的食物
第二批过期食品
因此,您可以使用joinmysql操作查询您的数组。您需要如下所示的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
您可以在此处找到更多信息:为什么不在sql本身中编写联接?这两个表之间没有任何关系吗?我真的不知道该怎么做,因为我有不同的where子句。为什么不在sql本身中编写联接呢?这两个表之间没有关系吗?我真的不知道该怎么做,因为我有不同的where子句。它就像一个符咒!谢谢:)我尝试过这样的事情,但在$array_merged[$key]['out-of-date']=$val['out-of-date']时失败了@sleakerz没什么,请把答案标记为有用:我意识到:如果($val['food']==$value['food'])为假,那么我会丢失数据。我应该做一个“else”加上一个推,来推这条线不?它就像一个符咒!谢谢:)我尝试过这样的事情,但在$array_merged[$key]['out-of-date']=$val['out-of-date']时失败了@sleakerz没什么,请把答案标记为有用:我意识到:如果($val['food']==$value['food'])为假,那么我会丢失数据。我应该做一个“else”加一个推,来推这行不行?