Sunil
Sunil

Reputation: 31

How to eqally split an array to 3 arrays

I have a one dimensional array as follows. (It may dynamically extend to any length)

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
    )

)

Now I would like to split it to 3 arrays . I mean I would like to split an array in to 3 arrays as follows.

    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
    )

)

Upvotes: 0

Views: 440

Answers (2)

James C
James C

Reputation: 14149

$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;

Upvotes: 1

Juraj.Lorinc
Juraj.Lorinc

Reputation: 533

Try this code:

<?
$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>';
?>

Your original array should be in variable $array

Upvotes: 0

Related Questions