2012-10-18 3 views
1

나는 부모와 차일 다차원 배열을하고 난요소를 다차원 배열로 이동하십시오.

그것은 다음과 같습니다 배열의 키를 변경하려면 :

내가, 예를 들어, 아래의 아이디 (108)와 배열을 이동하려는
Array 
(
    [0] => stdClass Object 
    (
     [id] => 108 
     [parent_id] => 0 
     [children] => Array 
     (
      [0] => stdClass Object 
      (
       [id] => 71 
       [parent_id] => 108 
       [children] => Array 
       (
        [0] => stdClass Object 
        (
         [id] => 107 
         [parent_id] => 71 
         [children] => Array 
         (
          [0] => stdClass Object 
          (
           [id] => 78 
           [parent_id] => 107 
          ) 
         ) 
        ) 
       ) 
      ) 
     ) 
    ) 

    [1] => stdClass Object 
    (
     [id] => 82 
     [parent_id] => 0 
    ) 

    [2] => stdClass Object 
    (
     [id] => 84 
     [parent_id] => 0 
    ) 

    [3] => stdClass Object 
    (
     [id] => 88 
     [parent_id] => 0 
    ) 

    [4] => stdClass Object 
    (
     [id] => 92 
     [parent_id] => 0 
    ) 
) 

배열 [id] => 88. 문제는 배열을 새 위치로 이동하지만 하위 배열도 이동하는 것입니다.

답변

0
function array_remove($array, $index) { 
    array_splice($array, $index, 1, array()); 
    return $array; 
} 

function array_insert($array, $element, $index) { 
    array_splice($array, $index, 0, array($element)); 
    return $array; 
} 

function array_move($array, $from, $to) { 
    $element = $array[$from]; 
    $array = array_remove($array, $from); 
    $array = array_insert($array, $element, $to - 1); 
    return $array; 
} 

$array = array_move($array, 0, 4); 
print_r($array); 
+0

감사합니다. Alin하지만 약간의 문제가 있습니다. 배열이 삽입되지 않습니다. 그래서 만약 당신이 array (1,2,3,4,5,6,7,8); 그리고 난 얻을 6 0 이동 어레이 ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 [5] => 0 [7] => 7 [>] = 8 ) 값 6이 손실되었습니다. 그래서 키를 이동하려고합니다. 값은 – alex

+0

입니다. 제가 해결 한 것 같아요. modif array_splice $ array, $ to, 0, $ array [$ to]); array_remove 호출 전에 array_move 함수에서 – alex

+0

위에서 아래로 이동할 경우에만 작동합니다 ... – alex

관련 문제