2012-02-15 17 views
4

私はJSONデータの列と量のある列を含むMysqlテーブルを持っています。 目的は、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); 
} 

は、しかし、私は唯一の最初のレコードセットを返すとしていますamountは空白ですが、JSONデータがリストされています。誰もが気にする洞察力を共有していただければ幸いです。

+0

'$ db-> query($ sql);' return?配列またはイテレータ? ['array_push'](http://php.net/array_push)と、そこには参照と[' iterator_to_array'](http(http://php.net/foreach))の注釈[http://php.net/foreach] ://php.net/iterator_to_array)。 – hakre

答えて

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, amountidの整数が非ユニークであれば潜在的に問題が発生する可能性があることにも注意してください。例えば(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 = Array、なぜ値が配列になるのですか? – delive

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); 
    } 

あなたはarray()それぞれを呼び出しているので、あなたの変数$cartは各ループに上書きされる代わりに、配列

7

の変数としてカートを処理し、時間。代わりに

、ループの外であなたの配列を宣言し、必要に応じてそれに値を追加します。

$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); 
} 
関連する問題