【发布时间】:2019-01-02 08:58:47
【问题描述】:
我有以下两个数组并使用了 array_merge_recursive 函数,因为我有多维数组,但是当第一个数组中的一个键有一个空白值并且同一个键在另一个数组中有一个数组时,在 array_merge_recursive 函数之后它添加“0 "那把钥匙的钥匙。
例如
$a = array("id"=>"0", "test-for-draft_FirstName"=>"testtt","test-for-draft_subform1"=>"");
$b = array("test-for-draft_subform1"=>array("test-for-draft_subform10"=>array("subform-1_FileField_60"=>array("name"=>"abcd")),"test-for-draft_subform11"=>array("subform-1_FileField_60"=>array("name"=>"abcdef"))), "test-for-draft_FileFieldTest1"=>array("name"=>"test"));
$extra_jform_data = array_merge_recursive($a,$b);
echo "<pre>";print_r($extra_jform_data);
&结果是
Array
(
[id] => 0
[test-for-draft_FirstName] => testtt
[test-for-draft_subform1] => Array
(
[0] =>
[test-for-draft_subform10] => Array
(
[subform-1_FileField_60] => Array
(
[name] => abcd
)
)
[test-for-draft_subform11] => Array
(
[subform-1_FileField_60] => Array
(
[name] => abcdef
)
)
)
[test-for-draft_FileFieldTest1] => Array
(
[name] => test
)
)
因此,它为 [test-for-draft_subform1] 数组添加了 [0] 键。我不想要这个。有没有其他 PHP 数组函数可以避免这种情况。
【问题讨论】:
-
你的 $b 数组指定 test-for-draft_subform1 包含一个数组,你没有指定一个键,所以它变成了 0。 var_dump($b) 你会明白我的意思。 array_merge_recursive 正在按预期工作。
-
创建自己的函数。
-
@AneesSaban test-for-draft_subform1 将始终在第二个数组中为我提供一个数组,即 $b
-
所以你不想合并,你实际上希望
$b["test-for-draft_subform1"]中的数组扔掉你会得到的空字符串$a["test-for-draft_subform1"]. -
@Mangesh 你可以在合并之前在两个数组上调用
array_filter...检查我的答案
标签: php arrays multidimensional-array array-merge