2011-10-07 5 views
1

배열이 중첩되어 있고 키가 일치 할 때 한 배열의 내용을 다른 배열에 추가하려고합니다. 여기 내 함수가 있지만 그것을 대체하는 대신에 추가됩니다.PHP에서 배열을 병합하는 중 오류가 발생했습니다

function MergeArrays($arr, $ins) 
{ 
    if(is_array($arr)) 
    { 
     if(is_array($ins)) 
      foreach($ins as $k=>$v) 
      { 
       if(isset($arr[$k])&&is_array($v)&&is_array($arr[$k])) 
       { 
        $arr[$k] = MergeArrays($arr[$k], $v); 
       } 
       else 
       { 
        // This is the new loop :) 
        // while (isset($arr[$k])) 
         // $k++; 
        // HERE IS WHERE I WANT TO APPEND INSTEAD OF ADD 
        $arr[$k] = $v; 
       } 
      } 
    } 
    else if(!is_array($arr)&&(strlen($arr)==0||$arr==0)) 
    { 
     $arr=$ins; 
    } 
    return($arr); 
} 

권장 사항?

감사

+1

코드의 screengrab를 게시하지 마십시오. 코드 자체를 붙여넣고 편집기에 코드 샘플 ("{}") 아이콘을 사용하여 형식을 지정하기 만하면됩니다. –

+1

스크린 샷이 아닌 코드를 공유하십시오. – Shef

답변

0

당신도 함께 배열을 추가하거나 새로 배열을 병합 array_merge를 사용하여 항목을 병합 할 수 있습니다.

사용자 정의 코드없이 이것을 해결하기 위해 array_merge_recursive을 사용하지 않는 이유가 무엇입니까? 내가 제대로 질문을 읽고 있어요 확실하지 않다

+0

array_merge_recursive를 시도하고 시각적으로 작업을 수행했습니다. 그럼에도 불구하고 결과를 반복하면 요소 (배열)가 추가 된 배열에 CLASSNAME 속성이 없으므로 반복이 일관성이 없다는 것을 알았습니다. 그것에 관한 어떤 생각? 나는 확실히 array_merge_recursive를 사용하는 것을 선호 할 것이다. – ldj

0

, 난 당신이 무슨 일을하는지에 관해서 조금 혼란 스러워요, 그러나 이것은 도움이 될 수 있습니다 :

는 지금까지 내가 말할 수있는, 당신이 원하는 $ arr [k]의 값에 $ v의 값을 덧붙입니다. 그러므로 당신은 이러한 것들을 함께 연결하고자합니다.

그러므로 코멘트 아래 줄에 = 대신 =를 사용하고 싶습니다.

관련 문제