2016-03-17 61 views
3

我有此期望關聯數組格式(參見下文)推關聯陣列作爲一個關聯數組

$url = array (
    "a1" => array(
     'k1' => "content of k1 in a1 array", 
     'k2' => "content of k2 in a1 array" 
    ), 
    "a2" => array(
     'k1' => "content of k1 in a2 array", 
     'k2' => "content of k2 in a2 array" 
    ), 
); 

和Laravel事情,我檢索它在數據庫表和環路中的記錄,然後獲得它的價值並將其推向一個陣列。

$k = kk::with('kk_names')->get(); 
$k_array = array(); 
foreach($k as $item){ 
    $sr = array($item->name => array("k1" => $item->items[0]->description,"k2" => $item->items[1]->description)) 
array_push($k_array,$sr); 
} 

它做的作品,但在關聯數組格式(參見上述關聯數組格式)是不是我想要的,它給了我這個代替。

$url = array (
    array("a1" => array(
     'k1' => "content of k1 in a1 array", 
     'k2' => "content of k2 in a1 array" 
    )), 
    array("a2" => array(
     'k1' => "content of k1 in a2 array", 
     'k2' => "content of k2 in a2 array" 
    )), 
); 

有什麼想法,請幫忙嗎?

回答

6

array_push將元件推到array的末尾。你正在做的一樣 -

array_push(array(...), array($item->name => ...)); 

這將使 -

array (
    array($item->name => ...), 
    array($item->name => ...) 
) 

但根據所需輸出,你想$item->name成爲指數和陣列(「K1」 ...)是元素。

你可以做簡單 -

foreach($k as $item) { 
    $k_array[$item->name] = array(
     "k1" => $item->items[0]->description, 
     "k2" => $item->items[1]->description 
    ); 
} 
+0

那麼你如何把它放在一個循環,並陣推? –

+0

@CodeDemon檢查更新的代碼。你可以把這個先前的代碼放在循環中,它就可以工作。 –

+0

謝謝,像魅力一樣工作! :) –

1

裏面的foreach循環做到這一點,而不是。

foreach($k as $item){  
    $k_array[$item->name] = array(
     "k1" => $item->items[0]->description, 
     "k2" => $item->items[1]->description 
    ) 
} 

,你不需要使用array_push($k_array,$sr);