0

SQL とループを使用して多次元配列を作成する必要があります。ただし、配列に設定される結果は 1 つだけであり、最後の結果は前の結果を上書きします。配列構造は次のようになります。

 ->value = Array (4)
   CartID => "1299"
   Date => "2012-09-27 09:17:20"
   Amount => "85.00"
         0 => Array (8)
         CartStatus => "Purchased"
         Date => "2012-09-27 09:17:20"
         CartID => "1299"
         Sequence => "1"
         Amount => "-85.00"
         Comments => " , Refund Status: "

これが私のコードです:

    $txarray = array();
    foreach ($data as $transaction) {
    $CartVar = $transaction['CartID'];
    $CartStatus = $transaction['Status'];
    $CartDate = $transaction['DateTime'];
    $CartTotal = $transaction['Total'];
    $txarray = array('CartID' => $CartVar, 'Date' => $CartDate, 'Amount' => $CartTotal);
        $sql1 = $db->query("SQL stuff");
        foreach ($sql1 as $refund) {
        $CartID = $refund['CartID'];
        $Sequence = $refund['Sequence'];
        $TrxType = $refund['TrxType'];
        $ParentID = $refund['ParentID'];
        $TotalSum = '-'.$refund['Amount'];
        $Comments = ' '.$refund['Comments'];
        $Comments .= ', Refund Status: '.ucwords($refund['Status']);
        $txarray[] = array('CartStatus' => $CartStatus, 'Date' => $CartDate, 'CartID' => $CartID, 'Sequence' => $Sequence, 'TrxType' => $TrxType, 'ParentID' => $ParentID, 'Amount' => $TotalSum, 'Comments' => $Comments);
    }
4

2 に答える 2

1

この行:

$txarray = array('CartID' => $CartVar, 'Date' => $CartDate, 'Amount' => $CartTotal);

以前の反復で作成した以前の配列を破棄します。

于 2012-10-24T17:24:08.820 に答える
1

上記のコード スニペットを見ると、コードによって $txarray 変数が上書きされています。

$txarray = array('CartID' => $CartVar, 'Date' => $CartDate, 'Amount' => $CartTotal);

それを置き換える必要があります

$txarray[] = array('CartID' => $CartVar, 'Date' => $CartDate, 'Amount' => $CartTotal);

または、配列をプッシュして多次元配列にする array_push() 関数を使用することもできます。例えば

 array_push($txarray,array('CartID' => $CartVar, 'Date' => $CartDate, 'Amount' =>      $CartTotal));

array_push 関数の詳細については、以下の URL のドキュメントを参照してください。 http://php.net/manual/en/function.array-push.php

于 2012-10-24T17:37:02.833 に答える