2016-02-26 48 views
1

我想合并两个数组。用不同的键合并PHP数组

第一个看起来是这样的:

array(28) { 
    [0]=> 
    array(17) { 
    ["category_id"]=> 
    string(2) "11" 
    ["image"]=> 
    string(27) "718426050751.jpg" 
    ["parent_id"]=> 
    string(1) "1" 
    ["top"]=> 
    string(1) "0" 
    ["column"]=> 
    string(1) "1" 
    ["sort_order"]=> 
    string(2) "21" 
    ["status"]=> 
    string(1) "1" 
    ["date_added"]=> 
    string(19) "2015-07-30 14:06:42" 
    ["date_modified"]=> 
    string(19) "2016-01-05 12:21:32" 
    ["language_id"]=> 
    string(1) "1" 
    ["name"]=> 
    string(7) "Faucets" 
    ["description"]=> 
    string(0) "" 
    ["meta_description"]=> 
    string(0) "" 
    ["meta_keyword"]=> 
    string(0) "" 
    ["store_id"]=> 
    string(1) "1" 
    ["product_count"]=> 
    string(1) "0" 
    ["page_count"]=> 
    string(1) "0" 
    } 

,第二个看起来像这样:

array(17) { 
    ["category_id"]=> 
    string(2) "13" 
    ["image"]=> 
    string(28) "4005176268779.jpg" 
    ["parent_id"]=> 
    string(2) "11" 
    ["top"]=> 
    string(1) "0" 
    ["column"]=> 
    string(1) "1" 
    ["sort_order"]=> 
    string(1) "2" 
    ["status"]=> 
    string(1) "1" 
    ["date_added"]=> 
    string(19) "2015-07-30 14:06:43" 
    ["date_modified"]=> 
    string(19) "2016-01-07 14:10:53" 
    ["language_id"]=> 
    string(1) "1" 
    ["name"]=> 
    string(12) "Sink Faucets" 
    ["description"]=> 
    string(0) "" 
    ["meta_description"]=> 
    string(0) "" 
    ["meta_keyword"]=> 
    string(0) "" 
    ["store_id"]=> 
    string(1) "1" 
    ["product_count"]=> 
    string(1) "0" 
    ["page_count"]=> 
    string(1) "0" 
} 

正如你所看到的第二个没有像第一个关键这是[0]。

当我使用:

$children = array_merge((array)$children, (array)$additional); 

我得到一个合并后的数组,但额外的阵列没有得到一个关键的这对我来说将优选[1],或者从最后一个数组键+1。

可以做到这一点吗?

感谢

+0

假设儿童$的第一个阵列,为什么不使用$儿[0]数组中合并吗?像'$ children [0] = array_merge($ children [0],$ additional);' – kainaw

+0

你需要array_merge吗? '$ children [] = $ additional'应该可以工作 – Gavin

+0

我们是否需要所有这些数据来理解您的问题?你能让它更简单吗?否则你会失去很多能够帮助你的人:( –

回答

0

array_merge()是没有必要的,你只需要在第二阵列推到第一。 $a[]=$b;$b的数据添加到$a,并分配一个自动递增的密钥而不需要函数调用。

代码:

$a=[ 
    0=>[ 
     "category_id"=>"11", 
     "image"=>"718426050751.jpg", 
     "parent_id"=>"1", 
     "top"=>"0", 
     "column"=>"1", 
     "sort_order"=>"21", 
     "status"=>"1", 
     "date_added"=>"2015-07-30 14:06:42", 
     "date_modified"=>"2016-01-05 12:21:32", 
     "language_id"=>"1", 
     "name"=>"Faucets", 
     "description"=>"", 
     "meta_description"=>"", 
     "meta_keyword"=>"", 
     "store_id"=>"1", 
     "product_count"=>"0", 
     "page_count"=>"0" 
    ] 
]; 
$b=[ 
    "category_id"=>"13", 
    "image"=>"4005176268779.jpg", 
    "parent_id"=>"11", 
    "top"=>"0", 
    "column"=>"1", 
    "sort_order"=>"2", 
    "status"=>"1", 
    "date_added"=>"2015-07-30 14:06:43", 
    "date_modified"=>"2016-01-07 14:10:53", 
    "language_id"=>"1", 
    "name"=>"Sink Faucets", 
    "description"=>"", 
    "meta_description"=>"", 
    "meta_keyword"=>"", 
    "store_id"=>"1", 
    "product_count"=>"0", 
    "page_count"=>"0" 
]; 
$a[]=$b; // push, not merge 
var_export($a); 

输出:

array (
    0 => 
    array (
    'category_id' => '11', 
    'image' => '718426050751.jpg', 
    'parent_id' => '1', 
    'top' => '0', 
    'column' => '1', 
    'sort_order' => '21', 
    'status' => '1', 
    'date_added' => '2015-07-30 14:06:42', 
    'date_modified' => '2016-01-05 12:21:32', 
    'language_id' => '1', 
    'name' => 'Faucets', 
    'description' => '', 
    'meta_description' => '', 
    'meta_keyword' => '', 
    'store_id' => '1', 
    'product_count' => '0', 
    'page_count' => '0', 
), 
    1 => 
    array (
    'category_id' => '13', 
    'image' => '4005176268779.jpg', 
    'parent_id' => '11', 
    'top' => '0', 
    'column' => '1', 
    'sort_order' => '2', 
    'status' => '1', 
    'date_added' => '2015-07-30 14:06:43', 
    'date_modified' => '2016-01-07 14:10:53', 
    'language_id' => '1', 
    'name' => 'Sink Faucets', 
    'description' => '', 
    'meta_description' => '', 
    'meta_keyword' => '', 
    'store_id' => '1', 
    'product_count' => '0', 
    'page_count' => '0', 
), 
) 
+0

@ smack-a-bro你的问题似乎被放弃了,这代表了未来SO研究人员的死胡同。一个答案让你接受,我已经发布了一些东西,以便你的问题可以关闭。 – mickmackusa