Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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 - Fatal编程技术网

Php 如何将一行数组插入到另一个数组中

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

数据来自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\u mergearray\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”加一个推,来推这行不行?