2011-05-22 166 views
1

我試圖構建一個多陣列採用這種結構:PHP foreach循環來構建多陣列

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 
+0

shouldent $按行> car_id是一個數組已經後更好的辦法弄清楚? – 2011-05-22 04:13:20

+0

我只是把它放在那裏以顯示我需要幫助的地方 - 讓它像那樣只會返回一輛車,而不是用戶可能擁有的一系列汽車 - 我需要爲每個用戶循環所有車輛 – pepe 2011-05-22 04:24:53

+0

很難如果汽車在不同的行上分開,那麼汽車就會變成一個數組,因爲當你把它放在一個數組中時,同一個查詢的下一個結果就會浪費,你知道我的想法了嗎? – 2011-05-22 04:34:46

回答

2

看來你是通過創建一個數據庫表中的數組。所以你可以給2個或更多的樣本數據。如果樣本數據存在,那麼給出答案會更容易。

編輯: 嗯,這可能不是最好的代碼,但我認爲你就可以看到這個

$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 
    } 
+0

只是在OP的一些示例數據 - 讓我知道你在想什麼,謝謝 – pepe 2011-05-22 04:23:00

+0

@torr這是我用這個解決方案得到的陣列 Array([2] => Array([name] => Jack [location] = > A [汽車] =>陣列([0] =>保時捷[1] =>豐田))[5] =>陣列([名稱] =>盧克[位置] => B [cars] =>陣列([ 0] => Honda [1] => VW [2] => Maserati))[1] => Array([name] => Jabba [location] => C [cars] => Array([0] =>特斯拉))) – sYl3r 2011-05-22 05:51:13

+0

實際上你的想法使用'array_push'對於這種情況非常好 - 不知道其他解決方案是否會比這更有效率 - 感謝您的幫助! – pepe 2011-05-22 14:15:10