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

时间:2016-06-06 12:34:54

标签: 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(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"
  }
...

2 个答案:

答案 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