2016-04-07 114 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

相关问题