2014-03-05 131 views
1

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

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]); 
+0

我的猜测是你在脚本中做了一些其他的事情,在你开始操作数组之前,它正在使用大量的内存。总共运行多少个查询? – rebroken

回答

0

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

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

+0

哈哈哈很好看,谢谢! – user3382999

0

可能是,如果你尝试取消设置你的$ _array [$ k]的前设置新会使得它的工作? 虽然我怀疑这会改变任何东西,除非在巨大的条目...

相关问题