2014-03-05 2 views
1

임 보고서에 전달해야하는 배열을 작성하려고합니다. 반환 된 데이터 중 일부는 비슷한 필드 이름을 가지므로 아래 함수를 사용하여 배열을 병합하기 전에 배열 키 이름에 접두사를 추가합니다. 그러나 메모리 부족 예외가 발생합니다. "치명적인 오류 : 536870912 바이트의 사용 가능한 메모리 크기가 고갈되었습니다 (시도했습니다. .. "에서 44 바이트 할당), 메모리의 많은 부분을 사용하지 않을 어레이의 배열 키에 접두사를 추가하는 다른 방법이 있습니까?치명적인 오류 : 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); 
    } 

함수를 호출 : 당신이 것이 작동하게 새로운 하나를 설정하기 전에 $의 _array [$ K]를 설정 해제하려고하면

$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

이 될 수 있습니까? 거대한 항목을 제외하고 그 변화가 의심 스럽지만 ...

관련 문제