2016-06-10 70 views
2

我想Concat的使用PHP我所有的數組包含爲一體,如何Concat的PHP數組

我有這個數組開頭:

{ 
    "errors": [ 
    [ 
     { 
     "id": "login1", 
     "error": "Invalid" 
     }, 
     { 
     "id": "login2", 
     "error": "Invalid" 
     }, 
     { 
     "id": "login3", 
     "error": "Invalid" 
     } 
    ], 
    [], 
    [ 
     { 
     "id": "login10", 
     "error": "Invalid" 
     }, 
     { 
     "id": "login11", 
     "error": "Invalid" 
     } 
    ] 
    ] 
} 

而且我想改變這樣的:

{ 
    "errors": [ 
     { 
     "id": "login1", 
     "error": "Invalid" 
     }, 
     { 
     "id": "login2", 
     "error": "Invalid" 
     }, 
     { 
     "id": "login3", 
     "error": "Invalid" 
     }, 
     { 
     "id": "login10", 
     "error": "Invalid" 
     }, 
     { 
     "id": "login11", 
     "error": "Invalid" 
     } 
    ] 
} 

我嘗試array_pusharray_mergearray_merge_recursive 我的錯誤數組填充登錄的多個陣列,我想有全部在一個陣列中。 我該怎麼做?

+1

and ... array_merge_recursive'出了什麼問題? – jszobody

+0

它清除了第一個數組的值 – fandro

+0

看到我的答案在下面,用一個示例鏈接 – jszobody

回答

2

首先,看起來你有JSON數據,所以你需要json_decode吧。

然後看來你需要刪除第一層次的層次結構。循環遍歷errors的子數組,並將它們合併在一起。

像這樣的東西可能:

$errors = []; 
foreach($array['errors'] AS $subarray) { 
    $errors = array_merge_recursive($errors, $subarray); 
} 

工作例如:https://3v4l.org/JgqgO

你也可以用類似array_reduce做到這一點。

$errors = array_reduce($array['errors'], function($errors, $subarray) { 
    return array_merge_recursive($errors, $subarray); 
}, []); 
+0

多數民衆贊成在此感謝:) – fandro

+0

AS在foreach循環中的含義是什麼?它意味着只將當前數組作爲一個子對嗎? – fandro

+0

@fandro http://php.net/manual/en/control-structures.foreach.php – jszobody