2012-02-15 62 views
4

我有一個Mysql表,其中包含一列JSON數據和一列數量。 目標是提取JSON數據和數量並在foreach循環中構建一個數組。 這裏是我的代碼:從Foreach創建數組

$sql = "SELECT `Amount`, `NewObject` FROM `mb_cart` WHERE `MyID` = '$id'"; 
$data_main = $db->query($sql); 

這裏是我的發言,我使用來構建陣列:

foreach ($data_main as $transaction_main) { 
    $json_decoded = json_decode($transaction_main); 
    $cart = array('Amount' => $amount, 'CodeType' => $json_decoded->data->Type->data->codeType, 'Name' => $json_decoded->data->Name, 'SiteName' => $json_decoded->data->SiteName); 
} 

然而,當我運行這個,我只只返回第一個記錄集和金額爲空,但JSON數據已列出。欣賞任何人都在關注的洞察力。

+0

什麼'$ db-> query($ sql);'return?一個數組或迭代器?另見['array_push'](http://php.net/array_push)和那裏的註釋,['foreach'](http://php.net/foreach)帶有引用和['iterator_to_array'](http ://php.net/iterator_to_array)。 – hakre 2012-02-15 14:03:57

回答

22

您需要將[]添加到$cart陣列。通過每次運行foreach,您將覆蓋變量$ cart。

像這樣將工作:

foreach ($data_main as $transaction_main) { 
    $json_decoded = json_decode($transaction_main); 
     $cart[] = array('Amount' => $amount, 'CodeType' => $json_decoded->data->Type->data->codeType, 'Name' => $json_decoded->data->Name, 'SiteName' => $json_decoded->data->SiteName); 
    } 

或者,如果你想要的數組鍵來匹配每行的ID:

注:你需要設置$ id變量以某種方式高於IE:SELECT id, amount也注意到,如果來自id的整數是非唯一的,您可能會遇到問題。例如(1,1,2,3,4,5,6)它只會顯示最後一個ID爲1,而不是兩者(因爲密鑰是重複的)。

foreach ($data_main as $transaction_main) { 
    $json_decoded = json_decode($transaction_main); 
     $cart[$id] = array('Amount' => $amount, 'CodeType' => $json_decoded->data->Type->data->codeType, 'Name' => $json_decoded->data->Name, 'SiteName' => $json_decoded->data->SiteName); 
    } 
+0

我只收到$ names [$ row [「nombre」]] = array('id'=> $ row [「id」]); -------結果---------> key =Selecciónperfil,value =數組,爲什麼在值中獲取數組? – delive 2016-02-05 15:05:53

3
$cart = array(); 

foreach ($data_main as $transaction_main) { 
    $json_decoded = json_decode($transaction_main); 
    $cart[] = array('Amount' => $amount, 'CodeType' => $json_decoded->data->Type->data->codeType, 'Name' => $json_decoded->data->Name, 'SiteName' => $json_decoded->data->SiteName); 
} 

print_r($cart); 
3

試試這個:

$cart=array(); 
foreach ($data_main as $transaction_main) { 
    $json_decoded = json_decode($transaction_main); 
     $cart[] = array('Amount' => $amount, 'CodeType' => $json_decoded->data->Type->data->codeType, 'Name' => $json_decoded->data->Name, 'SiteName' => $json_decoded->data->SiteName); 
    } 

你被處理的車作爲一個變量,而不是數組

7

你的變量$cart被覆蓋在每個循環,因爲你調用每個array()時間。

相反,申報外循環的陣列,只是將其添加值需要:

$cart = array(); 
foreach ($data_main as $transaction_main) { 
    $json_decoded = json_decode($transaction_main); 
    $cart[] = array('Amount' => $amount, 'CodeType' => $json_decoded->data->Type->data->codeType, 'Name' => $json_decoded->data->Name, 'SiteName' => $json_decoded->data->SiteName); 
} 
0

接近,這是第一次創建一個變量$cart = array(); 然後順便做foreach(); 我已經寫代碼下面請通過它

foreach($data_main as $transaction_main){ 
    $json_decoded = json_decoded($transaction_main); 
    $cart[]=array('Amount' => $amount, 'CodeType' => $json_decoded->data->Type->data->codeType, 'Name' => $json_decoded->data->Name, 'SiteName' => $json_decoded->data->SiteName); 
}