2012-04-28 415 views
0

我有一个一维数组,如下所示。 (它可以动态地扩展到任何长度)如何将一个数组拆分为3个数组

Array 
(
[0] => Array 
    (
     [city] => Trivandrum 
     [citykey] => ab5416c6 
    ) 

[1] => Array 
    (
     [city] => Kochi 
     [citykey] => 85cb7d9c 
    ) 

[2] => Array 
    (
     [city] => Alappuzha 
     [citykey] => 4d5f200e 
    ) 

[3] => Array 
    (
     [city] => Mumbai 
     [citykey] => 47d98024 
    ) 

) 

现在我想将它分成3个数组。我的意思是我想将一个数组分割成3个数组,如下所示。

Array 
(
[0] => Array 
    (
     [city] => Trivandrum 
     [citykey] => ab5416c6 
    ) 
[1] => Array 
    (
     [city] => Mumbai 
     [citykey] => 47d98024 
    ) 

) 

Array 
(
[0] => Array 
    (
     [city] => Kochi 
     [citykey] => 85cb7d9c 
    ) 

) 

Array 
(
[0] => Array 
    (
     [city] => Alappuzha 
     [citykey] => 4d5f200e 
    ) 

) 
+2

取决于你如何想它分为3个不同的阵列,[array_chunk( )](http://www.php.net/manual/en/function.array-chunk.php)可能会有所帮助。 – drew010 2012-04-28 17:14:30

+0

你想要每个数组包含什么?这个问题并不清楚。你能否提供这个四元素数组的预期输出? – 2012-04-28 17:15:14

+0

我想得到这个输出。阵列 ( [0] =>数组 ( [城市] =>特里凡德琅 [citykey] => ab5416c6 ) [1] =>数组 ( [城市] =>孟买 [citykey] => 47d98024 ) ) 阵列 ( [0] =>数组 ( [城市] =>高知 [citykey] => 85cb7d9c ) ) 阵列 ( [0] =>阵列 ( [城市] =>阿拉普扎 [citykey] => 4d5f200e ) ) – Sunil 2012-04-28 17:19:16

回答

1
$a = range(1,4); // example input array of 4 items 
$n = 3; // number of pieces you want in the output array $b 

$b = array_fill(0, $n, array()); 
for($i=0; $i<count($a); $i++) { 
    $b[$i % $n][] = $a[$i]; 
} 

print_r($b); 

// if you need to split them out 
list($a1,$a2,$a3) = $b; 
0

试试这个代码:

<? 
$i=0; 
$array=Array(0=> Array("city" => 'Trivandrum', 
     "citykey" => 'ab5416c6' 
    ), 
1 => Array 
    (
     "city" => 'Kochi', 
     "citykey" => '85cb7d9c' 
    ), 
2 => Array 
    (
     "city" => 'Alappuzha', 
     "citykey" => '4d5f200e' 
    ), 
3 => Array 
    (
     "city" => 'Mumbai', 
     "citykey" => '47d98024' 
    ) 
); 
$array_0=array(); 
$array_1=array(); 
$array_2=array(); 
foreach ($array as $value) 
    { 
    $name='array_'.$i%3; 
    $temp[0]=$value; 
    $$name=array_merge_recursive($$name, $temp); 
    $i++; 
    } 
echo '<pre>'; 
print_r($array_0); 
print_r($array_1); 
print_r($array_2); 
echo '</pre>'; 
?> 

你原来的数组应该是变量$阵列

+0

我没有看到你在代码中声明'$ array'或'$ i'的地方。 – 2012-04-28 17:40:24

相关问题