Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用PHP和Mysql Foreach循环创建多维数组_Php_Mysql_Arrays_Multidimensional Array - Fatal编程技术网

使用PHP和Mysql Foreach循环创建多维数组

使用PHP和Mysql Foreach循环创建多维数组,php,mysql,arrays,multidimensional-array,Php,Mysql,Arrays,Multidimensional Array,我需要用sql和循环创建一个多维数组。但是,只有一个结果被设置到数组中,最后一个结果将覆盖以前的结果。以下是阵列结构的外观: ->value = Array (4) CartID => "1299" Date => "2012-09-27 09:17:20" Amount => "85.00" 0 => Array (8) CartStatus => "Purchased" Date =

我需要用sql和循环创建一个多维数组。但是,只有一个结果被设置到数组中,最后一个结果将覆盖以前的结果。以下是阵列结构的外观:

 ->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);
    }
这一行:

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

销毁您在早期迭代中创建的任何以前的数组。

查看上面的代码片段$txarray变量由于代码原因被覆盖

$txarray = array('CartID' => $CartVar, 'Date' => $CartDate, 'Amount' => $CartTotal);
需要用它来代替它

$txarray[] = array('CartID' => $CartVar, 'Date' => $CartDate, 'Amount' => $CartTotal);
或者,您也可以使用array_push()函数,该函数将数组推送到多维数组中。 e、 g

有关array_push函数的更多文档,请参阅以下url中的文档。

这是一个典型的例子,人们在创建对象时滥用关联数组。随着代码库越来越大,这样做只会变得越来越痛苦。用户不希望最后一个结果覆盖以前的结果,这意味着他需要从早期迭代中收到的数据。
 array_push($txarray,array('CartID' => $CartVar, 'Date' => $CartDate, 'Amount' =>      $CartTotal));