2016-04-07 112 views
0

所以我有一個array這樣的:以一個數組中的每個第n個元素,並把它變成另一個數組PHP

array(6) { [0]=> string(11) "12323423423" [1]=> string(4) "tito" [2]=> string(6) "235345" [3]=> string(14) " 564534534534" [4]=> string(5) "kralj" [5]=> string(6) "435345" } 

根據從另一個陣列稱爲$anotherArray元素的數量,讓我們說$anotherArray有3個元素,我應該先取第一個數組的3個元素,然後如果有第二個3個元素等,並將它們放入另一個數組中。我試了一下,像這樣:

$lengthManuelni=count($string);// $string being array displayed uphere 
$lengthAnothera=count($anotherArray); 
for ($i = 0; $i < $lengthManuelni; $i += $lengthAnothera) { 
    for ($j = 0; $j < $lengthAnothera; $j++) { 
     $restructured [$j] = $string[$i + $j]; 
     var_dump($restructured); 
    } 
    } 

所以我想這$restructured陣列看起來像這樣:

array(2) { [0]=> string(23) "12323423423,tito,235345" [1]=> string(28) " 564534534534,kralj,435345" } 

相反,當我做var_dump($restructured)它看起來像這樣:

array(1) { [0]=> string(11) "12323423423" } array(2) { [0]=> string(11) "12323423423" [1]=> string(4) "tito" } array(3) { [0]=> string(11) "12323423423" [1]=> string(4) "tito" [2]=> string(6) "235345" } array(3) { [0]=> string(14) " 564534534534" [1]=> string(4) "tito" [2]=> string(6) "235345" } array(3) { [0]=> string(14) " 564534534534" [1]=> string(5) "kralj" [2]=> string(6) "235345" } array(3) { [0]=> string(14) " 564534534534" [1]=> string(5) "kralj" [2]=> string(6) "435345" } 

請幫助,我堅持這一點。

+0

能否請您發表您的完整的輸入數組。 –

+0

那麼,完整的輸入數組會有所不同,這就是爲什麼我需要找到動態解決方案,這就是爲什麼我發佈這個示例數組。我的意思是,完整的輸入數組可能看起來就像$ string – Ognj3n

+0

所以你需要像你顯示的那樣拆分數組?是你所有的子數組大小是固定的?我的意思是6? –

回答

4

這是更簡單的實現這一目標使用array_chunkarray_map功能:

$restructured = array_map(function($v){ 
    return implode(",", $v); 
}, array_chunk($lengthManuelni, 3)); 

print_r($restructured); 

輸出:

Array 
(
    [0] => 12323423423,tito,235345 
    [1] => 564534534534,kralj,435345 
) 

http://php.net/manual/en/function.array-chunk.php

+0

這正是我所說的。 –

+0

使用array_column()作爲array_map()的替代函數更容易 –

+0

@MarkBaker,有趣的是,你可以使用'array_column'顯示一個例子嗎? – RomanPerekhrest

相關問題