2017-04-24 66 views
0

如何才能将“艺术家”值与“标题”值合并为一个值?如果有帮助,我使用PHP 5.2.4。将两个数组元素合并为一个

我有这样的阵列

Array 
(
    [0] => Array 
     (
      [artist] => Narcosis 
      [title] => Destruir 
      [duration] => 137 
      [date] => 1370807642 
      [genre_id] => 18 
     ) 

    [1] => Array 
     (
      [artist] => Ricardo Palma Fanjul 
      [title] => Mutant 
      [duration] => 347 
      [date] => 1448227909 
      [genre_id] => 18 
     ) 

) 

预期输出会是这样,只显示元素 “标题” 有两次的值:

Array 
(
    [0] => Array 
     (
      [title] => Narcosis - Destruir 
      [duration] => 137 
      [date] => 1370807642 
      [genre_id] => 18 
     ) 

    [1] => Array 
     (
      [title] => Ricardo Palma Fanjul - Mutant 
      [duration] => 347 
      [date] => 1448227909    
      [genre_id] => 18 
     ) 

) 

回答

1

试试这个:

$new = array_map(function($v) { 
    $v['title'] = $v['artist'].' - '.$v['title']; 
    unset($v['artist']); 
    return $v; 
}, $arr); 

OR

foreach ($arr as &$a) { 
    $a['title'] = $a['artist'].' - '.$a['title']; 
    unset($a['artist']); 
} 
+0

的第二个示例不能按预期工作。 –

+1

我的不好!我已经将它编辑为'$ arr as&$ a',它工作正常。 –

+0

第一个代码就是我需要的,谢谢! –

1

试试这个:

foreach ($mainArr as $index=>$subArr) { 
    $subArr['title'] = $subArr['artist'].' - '.$subArr['title']; 
    unset($subArr['artist']); 
    $mainArr[$index] = $subArr; 
} 

mainArr是上面声明的数组。

p.s.我没有测试此的代码,但

+0

更新了答案,我忘了替换现有的数组值wuth更新一个在我前面的回答 –