Я пытаюсь создать массив с такой структурой:
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
Кажется, что вы создаете массив через таблицу базы данных. Так что, пожалуйста, дайте две или более выборочных данных. будет легче дать ответ, если имеются данные образца.
Редактировать: Ну, это может быть не лучший код, но я думаю, что вы сможете найти лучший способ, увидев это
$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 }