致命错误:允许的内存大小为536870912字节

时间:2014-03-05 10:22:00

标签: php arrays out-of-memory runtime-error

我正在尝试构建一个需要传递给报表的数组。返回的一些数据具有相似的字段名称,所以我使用下面的函数在合并数组之前为数组键名添加前缀,但是我得到一个内存不足异常“致命错误:允许的内存大小为536870912字节耗尽(尝试过在...中分配44个字节),是否有另一种方法可以在不使用大量内存的数组中为数组键添加前缀?

function prefixArrayKeys(&$_array,$prefix){

   foreach($_array  as $k=>$v){

           $nk = $prefix.$k;
           $nv = $v;
           array_push($_array, array($nk=>$nv));

           unset($_array[$k]);
       }
               var_dump($_array);
   }

对函数的调用:

$aSQL = "select sex, a_number, to_char(b_dtm, 'DD/MM/YYYY') b_dtm from atable where a_id = ".$ped_array[1]['D']."";
   execute_sql($aSQL,$rsGTYPE);
   prefixArrayKeys(&$rsGTYPE[0],"D");
   if(count($rsGTYPE) > 0) $rowdata[0] = array_merge($rowdata[0],$rsGTYPE[0]);

2 个答案:

答案 0 :(得分:0)

如果您尝试取消设置$ _array [$ k]之前设置新的那个会使它工作吗? 虽然我怀疑这会改变什么,除非条目巨大......

答案 1 :(得分:0)

在你的foreach循环中,你正在使用array_push。

您正在添加到正在迭代的数组中,这是一个无限循环。