PHP цикл foreach для построения мультимассива - PullRequest
1 голос
/ 22 мая 2011

Я пытаюсь построить мульти массив с такой структурой:

Array
(
    [2] => Array //this is the user's unique ID
        (
            [name] => Jack
            [location] => Somerville, Massachusetts, United States
            [cars] => Array
                (
                    [10] => Toyota //this is the car's unique ID
                    [11] => Porsche
                )
        )

    [5] => Array
        (
            [name] => Luke
            [location] => Schwelm, North Rhine-Westphalia, Germany
            [cars] => Array
                (
                    [1] => Honda
                    [2] => VW
                    [5] => Maserati
                )
        )

    [1] => Array
        (
            [name] => Jabba
            [location] => Denver, Colorado, United States
            [cars] => Array
                (
                    [3] => Tesla
                )
        )
)

Я использую этот цикл foreach, но застрял в получении массива cars, встроенного в массив search data.

У каждого пользователя может быть несколько машин, поэтому мне нужно было бы просмотреть все машины для каждого пользователя, сгенерировать этот массив и поместить его в исходный цикл foreach.

    $search_data = array();
    foreach ($query->result() as $row) {
        $search_data[$row->id] = array(

            'name' => $row->name,
            'location' => $row->location,
            'cars' => array($row->car_id), //this is where I need to insert another array
        );
    }
    return $search_data;

Любые предложения, как это сделать?

Спасибо за помощь!

ОБРАЗЕЦ ТАБЛИЦЫ ДАННЫХ

USER    NAME    LOCATION    CARS
2       JACK    A           TOYOTA
2       JACK    A           PORSCHE
5       LUKE    B           HONDA
5       LUKE    B           VW 
5       LUKE    B           MASERATI
1       JABBA   C           TESLA

1 Ответ

2 голосов
/ 22 мая 2011

Кажется, что вы создаете массив через таблицу базы данных. Так что вы можете дать 2 или более образцов данных. будет легче дать ответ, если там есть образцы данных.

Edit: Возможно, это не лучший код, но я думаю, что вы сможете найти лучший способ, увидев

$id = $row['id'];
    if (!isset($search_data[$id])){
        $search_data[$id] = array();
    }
    $search_data[$id]['name'] = $row['name'];
    $search_data[$id]['location'] = $row['location'];
    if (isset($search_data[$id]['cars'])) {
        array_push($search_data[$id]['cars'],$row['cars']);
    }else{
        $search_data[$id]['cars'] = array($row['cars']); //this is where I need to insert another array
    }
...