【发布时间】:2016-12-14 17:39:27
【问题描述】:
我需要合并两个“三维”数组,但我的问题是,当数组中的第一个键与另一个相同时,结果只是......不可取。
这里有一个例子:
$a = array(
1=>array(
-1 => array(-1=>'a: 1 -1 -1',0=>'a: 1 -1 0',1=>'a: 1 -1 1'),
0 => array(-1=>'a: 1 0 -1', 0=>'a: 1 0 0', 1=>'a: 1 0 1'),
1 => array(-1=>'a: 1 1 -1', 0=>'a: 1 1 0', 1=>'a: 1 1 1')
)
);
$b = array(
1=>array(
1 => array(-1=>'b: 1 1 -1',0=>'b: 1 1 0',1=>'b: 1 1 1'),
2 => array(-1=>'b: 1 2 -1',0=>'b: 1 2 0',1=>'b: 1 2 1'),
3 => array(-1=>'b: 1 3 -1',0=>'b: 1 3 0',1=>'b: 1 3 1')
)
);
$a + $b 的结果是:
Array
(
[1] => Array
(
[-1] => Array
(
[-1] => a: 1 -1 -1
[0] => a: 1 -1 0
[1] => a: 1 -1 1
)
[0] => Array
(
[-1] => a: 1 0 -1
[0] => a: 1 0 0
[1] => a: 1 0 1
)
[1] => Array
(
[-1] => a: 1 1 -1
[0] => a: 1 1 0
[1] => a: 1 1 1
)
)
)
我需要对 PHP 说,“嘿,'b' 数组中的键 [1][2][X] 和 [1][3][X] 不在 'a' 数组中,所以将它们合并到结果中”。
当所有三个键都相同时,我什至不太关心 PHP 会采用哪一个。键的值是字符串,所以我也对这些值的总和不感兴趣。而且我需要保留键,这样简单的 array_merge 就没有用了。也许我需要将它与其他功能结合起来,但我看不出是哪一个。
提前致谢。
【问题讨论】:
-
出于兴趣,您是否尝试过使用array_merge_recursive 或array_replace_recursive 来获得想要的结果?
-
我不想让 PHP 跟我说话。我只是想和 PHP “交谈”,但我不知道如何去做。
-
看这里:php.net/manual/en/function.array.php 当然,你可以找到一些让你轻松的东西。 PHP 通常为函数使用有意义的名称