2012-03-12 4 views
0

I는 출력 코드배열 출력 - 인덱스 구조 순서

$nArr = array('A', 'B', 'C', 'D', 'E', 'F'); 

$counter = 3; 
while ($counter > 0) { 
    $chunkedValues[$counter][0] = 1; 
    for ($j = 0 ; $j < $counter ; $j++) { 
     $chunkedValues[$counter][$j + 1] = $nArr[$j]; 
    } 
    $nArr = array_slice($nArr, $counter--); 
} 
var_dump($chunkedValues); 

가지고

array 
    3 => 
    array 
     0 => int 1 
     1 => string 'A' (length=1) 
     2 => string 'B' (length=1) 
     3 => string 'C' (length=1) 
    2 => 
    array 
     0 => int 1 
     1 => string 'D' (length=1) 
     2 => string 'E' (length=1) 
    1 => 
    array 
     0 => int 1 
     1 => string 'F' (length=1) 

을하지만, 이런 인덱스 구조 필요 I 원하는

array 
    0 => 
    array 
     0 => int 1 
     1 => string 'A' (length=1) 
     2 => string 'B' (length=1) 
     3 => string 'C' (length=1) 
    1 => 
    array 
     1 => int 1 
     2 => string 'D' (length=1) 
     3 => string 'E' (length=1) 
    2 => 
    array 
     2 => int 1 
     3 => string 'F' (length=1) 

ceil으로 루프를 피하십시오.

아이디어가 있으십니까? 시간 내 줘서 고마워.

답변

2
$nArr = array('A', 'B', 'C', 'D', 'E', 'F'); 

$chunkedValues = array(); 
$gCounter = 0; 
for ($counter = 3, $start = 0; $counter > 0; $counter--, $start++) { 
    $arr = array($start => 1); 
    for ($j = 0; $j < $counter; $j++) $arr[]= $nArr[$gCounter++]; 
    $chunkedValues []= $arr; 
} 

var_dump($chunkedValues); 

하거나 요소의 순서 상관하지 않는 경우 :

$nArr = array('A', 'B', 'C', 'D', 'E', 'F'); 

$chunkedValues = array(); 
$gCounter = 0; 
for ($counter = 3, $start = 0; $counter > 0; $counter--, $start++) { 
    $arr = array_combine(
     range($start+1, $counter) 
     array_slice($nArr, $gCounter, $gCounter += $counter); 
    ); 
    $arr[$start] = 1; 
    $chunkedValues []= $arr; 
} 

var_dump($chunkedValues); 
+0

NOP, [0] [0] (1)를해야한다, [1] [1]를해야한다 [2] [2]이해야 : 당신은 그냥 사용 할 수있을 것 같은

같습니다 1 등. – user947462

+0

님이 답변을 수정했습니다. – kirilloid

0

당신은 단지 배열을 분할하고 있습니까?

$nArr = array('A', 'B', 'C', 'D', 'E', 'F'); 
$chunked = array_chunk($nArr , 3); 
var_dump($chunked);