[ create a new paste ] login | about

Link: http://codepad.org/K7mKxrU5    [ raw code | output | fork ]

PHP, pasted on Dec 5:
<?php

// sample data
$db = array(
  array('country_id' => 1, 'country_name' => 'Russia', 'city_id' => 1, 'city_name' => 'Moscow'),
  array('country_id' => 1, 'country_name' => 'Russia', 'city_id' => 2, 'city_name' => 'Sankt-Petersburg'),
  array('country_id' => 1, 'country_name' => 'Russia', 'city_id' => 3, 'city_name' => 'Samara'),
  array('country_id' => 1, 'country_name' => 'Russia', 'city_id' => 4, 'city_name' => 'Orel'),
  array('country_id' => 1, 'country_name' => 'Russia', 'city_id' => 5, 'city_name' => 'Kursk'),
  array('country_id' => 2, 'country_name' => 'Ukraine', 'city_id' => 6, 'city_name' => 'Kiev'),
  array('country_id' => 2, 'country_name' => 'Ukraine', 'city_id' => 7, 'city_name' => 'Kharkov'),
  array('country_id' => 2, 'country_name' => 'Ukraine', 'city_id' => 8, 'city_name' => 'Odessa'),
  array('country_id' => 2, 'country_name' => 'Ukraine', 'city_id' => 9, 'city_name' => 'Lvov'),
  array('country_id' => 3, 'country_name' => 'Belarus', 'city_id' => 10, 'city_name' => 'Minsk'),
  array('country_id' => 3, 'country_name' => 'Belarus', 'city_id' => 11, 'city_name' => 'Gomel'),
  array('country_id' => 3, 'country_name' => 'Belarus', 'city_id' => 12, 'city_name' => 'Mogilev'),
);
// shuffle($db); // will work even shuffle data

$res = array();
foreach($db as $item) {
  if ( !isset($res[$item['country_id']]) ) {
    $res[$item['country_id']] = array(
      'country_id' => $item['country_id'],
      'country_name' => $item['country_name'],
      'cities' => array(),
    );
  }
  $res[$item['country_id']]['cities'][] = array(
    'city_id' => $item['city_id'],
    'city_name' => $item['city_name'],
  );
}

print_r($res);


Output:
Array
(
    [1] => Array
        (
            [country_id] => 1
            [country_name] => Russia
            [cities] => Array
                (
                    [0] => Array
                        (
                            [city_id] => 1
                            [city_name] => Moscow
                        )

                    [1] => Array
                        (
                            [city_id] => 2
                            [city_name] => Sankt-Petersburg
                        )

                    [2] => Array
                        (
                            [city_id] => 3
                            [city_name] => Samara
                        )

                    [3] => Array
                        (
                            [city_id] => 4
                            [city_name] => Orel
                        )

                    [4] => Array
                        (
                            [city_id] => 5
                            [city_name] => Kursk
                        )

                )

        )

    [2] => Array
        (
            [country_id] => 2
            [country_name] => Ukraine
            [cities] => Array
                (
                    [0] => Array
                        (
                            [city_id] => 6
                            [city_name] => Kiev
                        )

                    [1] => Array
                        (
                            [city_id] => 7
                            [city_name] => Kharkov
                        )

                    [2] => Array
                        (
                            [city_id] => 8
                            [city_name] => Odessa
                        )

                    [3] => Array
                        (
                            [city_id] => 9
                            [city_name] => Lvov
                        )

                )

        )

    [3] => Array
        (
            [country_id] => 3
            [country_name] => Belarus
            [cities] => Array
                (
                    [0] => Array
                        (
                            [city_id] => 10
                            [city_name] => Minsk
                        )

                    [1] => Array
                        (
                            [city_id] => 11
                            [city_name] => Gomel
                        )

                    [2] => Array
                        (
                            [city_id] => 12
                            [city_name] => Mogilev
                        )

                )

        )

)


Create a new paste based on this one


Comments: