2011-01-26 4 views
0

동일한 레벨에 배열이 있습니다.배열에서 다중 배열을 만드는 방법은 무엇입니까?

$original = Array(
     0=>"03ssss",//substr("03ssss",0,2)="03" => parent index 

      1=>"04aaaa", 
      2=>"05absd", 
      3=>"07sdsa", 
      4=>"08sdsd", 

     5=>"03tttt", //substr("03tttt",0,2)="03" => parent index 

      6=>"04xxxx, //substr("03xxxx",0,2)="04" => child index 
      7=>"05sdds", 
      8=>"07sdfd", 
      9=>"08sdff", 
      10=>"04xsax", //substr("03xxxx",0,2)="04" => child index 
      11=>"05sdfs", 
      12=>"07sdfds", 
      13=>"08asap", 
    ) 

어떻게 $original에서 여러 가지 배열로 만들 수 있습니까?

$move_level = Array(
0=>array(0=>"04aaaa 05absd 07sdsa 08sdsd"), 
1=>array(0=>"04xxxx 05sdds 07sdfd 08sdff", 
      1=>"04xsax 05sdfs 07sdfds 08asap") 
); 

감사

+1

귀하의'$ move_level' 예는 이해가되지 않습니다. '$ original'과 같은 4 개의 요소를 새로운 배열의 여러개의 배열로 복사하고 싶습니까? –

+2

새 배열을 만드는 규칙은 무엇입니까? 당신은 단순히 선도적 인 '03'을 가진 요소를 버리고 남은 요소들을 4 개의 블록으로 청크하고 있습니까? –

+1

예를 들어 원래 배열의 중복 된 요소 때문에 특히 의미가 명확하지 않습니다. – Matchu

답변

1

이 '03'로 시작하는 각 요소에 하위 배열에 $ 원래의 배열을 분할 :

$move_level = array(); 
$ary = array(); 
foreach($original as $value) { 
    if (strpos($value, '03') === 0) { 
     $move_level[] = $ary; 
     $ary = array(); 
    } else { 
     $ary[] = $value; 
    } 
} 
$move_level[] = $ary; 
+0

@ user576875 "04xxxx 05xxxx 07xxxx 08xxxx"이 (가) 함께 참여해야합니다. 내 예제 출력과 비슷합니다.하지만 당신과는 다른 점이 있습니다. 생각해보십시오. – kn3l

관련 문제