1

我正在尝试将一个键和值(关联)从一个数组添加到另一个数组,其中一个特定的键和值匹配。这是两个数组:

$array1 = array(
            1 => array(
                'walgreens' => 'location',
                'apples' => 'product1',
                'oranges' => 'product2'
            ),
            2 => array(
                'walmart' => 'location',
                'apples' => 'product1',
                'oranges' => 'product2',
                'milk' => 'product3'
            )
       );
$array2 = array(
            1 => array(
                'walgreens' => 'location',
                'apples' => 'product1',
                'oranges' => 'product2',
                'bananas' => 'product3',
            )
      );

这是我在修改$array1为具有键“bananas”和值“product3”时所做的尝试:

$dataCJ = getCJItem($isbn);
         foreach ($array1 as $subKey => $subArray) {
            foreach($subArray as $dkey => $dval){
                foreach($array2 as $cjk => $cjv){
                    foreach($cjv as $cjkey => $cjval){
                         if($dval['walgreens'] == $cjval['walgreens']){
                              $dval['bananas'] = $cjval['bananas'];
                         }
                    }
                }
            }
         }

这行不通。我怎样才能解决这个问题?

4

2 回答 2

3

更改=> $dval=> &$dval。目前您正在创建和写入一个新变量,并且更新不会就地工作。

于 2012-08-03T20:50:17.213 回答
2

我会看array_merge()功能!

这是PHP 文档的开始


对于您的具体情况,您可以执行以下操作:

foreach($array1 as $key1 => $values1){
    foreach($array2 as $key2 => $values2){
        if($values1[0] == $values2[0]){
            $array1[$key1] = array_merge($values1, $values2);
        }
    }
}

请注意,为了简化问题,您应该反转数组的第一个 key=> value 对。

以这种方式拥有一个数组会简单得多:

array(
    'location' => "The location (eg:walgreens)",
    //...
);

这样,您可以将比较更改为以下内容:

$values1['location'] == $values2['location']

如果阵列不是以该位置作为第一对来构建的,那么这会更安全。

于 2012-08-03T20:57:43.897 回答