массив получить те же записи - PullRequest
0 голосов
/ 12 декабря 2011

Я пытаюсь создать функцию, в которой я могу передать набор записей, который является массивом, и затем он выстроит в очередь всех производителей в стране и вернет обратно переделанный массив

мой набор записейis

[0] => Array
        (
            [Cars] => Array
                (
                    [Manufecturer] => Honda


                    [MID] => 584
                )


            [Chracterstics] => Array
                (

                    [Country] => Japan
                )

        )

[1] => Array
         (
            [Cars] => Array
                (
                    [Manufecturer] => Toyota


                    [MID] => 531
                )


            [Chracterstics] => Array
                (

                    [Country] => Japan
                )

        )


[2] => Array
         (
            [Cars] => Array
                (
                    [Manufacturer] => KIA


                    [MID] => 532
                )


            [Chracterstics] => Array
                (

                    [Country] => Korea
                )

        )

[3] => Array
         (
            [Cars] => Array
                (
                    [Manufacturer] => BMW


                    [MID] => 534
                )


            [Chracterstics] => Array
                (

                    [Country] => Germany
                )

        )

[4] => Array
         (
            [Cars] => Array
                (
                    [Manufacturer] => Mercedece


                    [MID] => 543
                )


            [Chracterstics] => Array
                (

                    [Country] => Germany
                )

        )

[5] => Array
         (
            [Cars] => Array
                (
                    [Manufacturer] => SAAB


                    [MID] => 523
                )


            [Chracterstics] => Array
                (

                    [Country] => Sweden
                )

        )

В идеальной ситуации я бы вернул массив.

EDIT например

[Japan] => Array
    (
       [0] => Array(
                   [Manufacturer] => Honda
                   ) 
       [1] => Array(
                     [Manufacturer] => Toyota
                   ) 
     )

[Sweden] => Array
    (
       [0] => Array(
                   [Manufacturer] => SAAB
                   ) 

     )

спасибо

1 Ответ

1 голос
/ 12 декабря 2011

Это может сработать. Очевидно, что это очень просто и не имеет дело с дубликатами и предполагает, что вы ищете название производителя, а не ID, но я оставлю это вам, если вы не хотите обновить свои требования.

function getManufacturerByCountry($array) {
    $results = array();
    foreach ($array as $tmp) {
        $results[$tmp['Chracterstics']['Country']][] = $tmp['Cars']['Manufacturer'];
    }
    return $results;
}

UPDATE: Чтобы избежать дубликатов,

foreach ($array as $tmp) {
    $country = $tmp['Chracterstics']['Country'];
    $manufacturer = $tmp['Cars']['Manufacturer'];
    // Only add manufacturer if new country or if manufacturer isn't in country array.
    if (!isset($results[$country]) || !in_array($manufacturer, $results[$country])) {
        $results[$country][] = $manufacturer;
    }
}
...