2017-01-18 9 views
1

나는 루프를 통과하는 각 배열 내에서 array_chunk 세트의 키를 가지고있다. 루프 된 각 배열에서 키 [10] =>을 제거하여 9 개의 키가 남게됩니다. 내가 지금까지 가지고있는 것.Array_Chunck에서 배열 키를 제거하는 방법?

$page = array("a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s"); 

$number_of_pages_to_copy = 5; 

$x = 1; 

    while($x <= $number_of_pages_to_copy) { 


     $sum = array_chunk($page, 11); 
     unset($sum['10']); 
     print_r($sum); 

    $x++; 
    } 

전류 출력 :

Array ([0] => Array ([1] => "a" [2] => "b" [3] => "c" [4] => "d" [5] => "e" [6] => "f" [7] => "g" [8] => "h" [9] => "i" [10]=> "j") 

[1]=> Array ([1] => "a" [2] => "b" [3] => "c" [4] => "d" [5] => "e" [6] => "f" [7] => "g" [8] => "h" [9] => "i" [10]=> "j") 

원하는 출력 :

Array ([0] => Array ([1] => "a" [2] => "b" [3] => "c" [4] => "d" [5] => "e" [6] => "f" [7] => "g" [8] => "h" [9] => "i") 

[1] => Array ([0] => Array ([1] => "a" [2] => "b" [3] => "c" [4] => "d" [5] => "e" [6] => "f" [7] => "g" [8] => "h" [9] => "i") 

아무것도 발생되지는 해제가 작동되지 않는 것 같습니다.

+0

마지막 요소를 제거하려면 [array_pop] (http://php.net/manual/en/function.array-pop.php)을 시도 했습니까? 어쨌든 $ sum은 원래 길이가 11 키가 아니라 10이됩니다. – aynber

+1

0-x에서 새로운 인덱스를 얻으려면'$ sum = array_values ​​(array_chunk ($ page, 11));'를 사용하면되고 인덱스는 사용되지 않습니다 as string do' unset ($ sum [10]); ' – JustOnUnderMillions

+0

array_pop을 시도했지만 잘 작동하지 않았습니다. – PirateTube

답변

0

$ sum은 배열의 배열이므로 다른 인덱스 또는 foreach를 사용해야합니다.

array_slice($sum[0],0,10); 

또는

foreach($sum as &$v) 
{ 
    unset($v[10]); 
} 

당신이 배열의 마지막 인덱스를 설정 해제, 그래서 당신은 해제 후 array_values를 사용하지 않을 경우, 배열을 인덱싱하는 neednot에 대한

. 여기

는 데모입니다 :

<?php 
$page = array("a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s"); 
$arrays= array_chunk($page, 11); 
foreach($arrays as &$array) 
{ 
    unset($array[10]); 
} 
print_r($arrays); 

출력 :

[email protected]:~$ php test.php 
Array 
(
    [0] => Array 
     (
      [0] => a 
      [1] => b 
      [2] => c 
      [3] => d 
      [4] => e 
      [5] => f 
      [6] => g 
      [7] => h 
      [8] => i 
      [9] => j 
     ) 

    [1] => Array 
     (
      [0] => l 
      [1] => m 
      [2] => n 
      [3] => o 
      [4] => p 
      [5] => q 
      [6] => r 
      [7] => s 
     ) 

) 

또는

<?php 
$page = array("a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s"); 
$arrays= array_chunk($page, 11); 
$arrays = array_map(function($v){return array_slice($v, 0, 10);}, $arrays); 
print_r($arrays); 

이이 같은 결과를 갖게 될 것이다.

+1

당신의 문장은 옳지 않습니다. unset은 unset과 array_values가 필요없는 것을 수행합니다. 사용자가 배열을 초기화하지 않고 배열을 다시 색인하고자한다면 array_values가 사용됩니다. 귀하의 대답은 assoc-array와 어떻게 작동합니까? '$ a = array ('a'=> 'a', 'b'=> 'b'); unset ($ a [ 'b']); print_r (array_values ​​($ a));'?? – JustOnUnderMillions

+0

'var_dump' 무엇? 코드 테스트에 무엇을 사용 했습니까? 그리고'array_values ​​[$ sum]'은'array_values ​​($ sum);'이어야합니다. 나는 떠난다. ....... – JustOnUnderMillions

+0

내가 사용하지 않은 ($ 합계 [0] [10]), 키가 사라졌지만 값은 여전히 ​​옆에 [9] => – PirateTube