【问题标题】:Proper way to merge 2 arrays in PHP在 PHP 中合并 2 个数组的正确方法
【发布时间】:2013-06-11 17:51:04
【问题描述】:

我正在尝试在 PHP 中合并 2 个数组

让我们举个例子

$array_old = array (
  'product_title' => 'LG Nexus 4 Android Smartphone 16GB Sim-Free',
  'site' => 'http://www.amazon.co.uk/LG-Nexus-Android-...',
  'title' => 'LG Nexus 4 Android Smartphone 16GB Sim-Free',
  'price' => '300.00',
  'delivery' => '0.00',
   'codes' => 
  array (
    'mpn' => 'LG-E960',
  ),
)


$array_new = array (
  'product_title' => 'Google Nexus 4 (UK 16GB Black)',
  'price' => '319.99',
  'brand' => 'Google Nexus 4 (UK, 16GB, Black)',
  'attributes' => 'color: black',
  'codes' => 
  array (
    'SKU' => '239049',
    'mpn' => 'E960'
  ),
)

合并后我需要:

$array_old = array (
  'product_title' => 'LG Nexus 4 Android Smartphone 16GB Sim-Free',
  'site' => 'http://www.amazon.co.uk/LG-Nexus-Android-...',
  'title' => 'LG Nexus 4 Android Smartphone 16GB Sim-Free',
  'price' => '300.00',
  'delivery' => '0.00',
  'attributes' => 'color: black',
    'codes' => 
  array (
    'mpn' => 'LG-E960',
    'SKU' => '239049',
  ),
)

我需要的是避免重写字段,我需要保留第一个数组中的所有值并添加第二个数组中的值。请记住,我在数组中有一个数组。

现在我在一个小的 Codeigniter 框架应用程序中尝试这种方式(array_merge 方式):

if((isset($array_new['codes']))&&(isset($array_old['codes']))) $array_merged['codes'] = array_merge($array_new['codes'],$array_old['codes']);
elseif(isset($array_new['codes'])) $array_merged['codes'] = $array_new['codes'];
elseif((isset($scraper_content['codes']))) $array_merged['codes'] = $array_old['codes'];
if(isset($array_new)) $array_old = array_merge($array_new,$array_old);
if (isset($array_merged['codes'])) $array_old['codes'] = $array_merged['codes'];

您知道更好的方法吗?棘手的是二级数组,数组里面的数组。

PS:这个问题我没有找到很好的回复,抱歉,如果我遗漏了什么或者信息不清楚,欢迎提出任何问题

干杯

【问题讨论】:

标签: php arrays merge


【解决方案1】:

尝试使用双数组合并:

function merge_products($a, $b) {
    $merged = array_merge($b, $a);
    $merged['codes'] = array_merge($b['codes'], $a['codes']);

    return $merged;
}

http://codepad.org/gY29h814

【讨论】:

  • 除了有时我们有空数组外,一切都很好。例如:$b['codes'] 为空
  • 如果 $a['codes'] 不存在,array_merge($b['codes'], $a['codes']) 将失败。如果是空的就好了。也许我最好更改我的脚本以使 $a['codes'] 为空且不丢失。如果我有信用的人,我会给你我的投票。谢谢马特奥
猜你喜欢
  • 1970-01-01
  • 2016-09-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-08
相关资源
最近更新 更多