2017-01-18 9 views
1

У меня есть array_chunk набор из 10 ключей в каждом массиве, который проходит через. Я хочу удалить ключ [10] => из каждого массива, который зациклирован, поэтому у меня останется 9 ключей. Что я до сих пор.Как удалить Array Key из 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") 

Ничего не происходит, The снята с охраны, кажется, не работает.

+0

Если вы хотите удалить последний элемент, попробуйте [array_pop] (http://php.net/manual/en/function.array-pop.php)? В любом случае $ sum изначально имеет 11 ключей, а не 10. – aynber

+1

Вы можете сделать '$ sum = array_values ​​(array_chunk ($ page, 11));' получить новый индекс от 0-x, а индексы не используются как строка do 'unset ($ sum [10]);' – JustOnUnderMillions

+0

Я пробовал array_pop, тоже не работал. – PirateTube

ответ

0

Ваша сумма представляет собой массив массивов, поэтому вам нужно использовать другой индекс или foreach.

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

или

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

для вас сбросить последний индекс массива, так что вы neednot переиндексации массив, если не использовать array_values ​​после неустановленной.

Вот демо:

<?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 делает то, что отменяет, и не требует array_values. если пользователь хочет переиндексировать массив после того, как вы отменили что-то, что array_values ​​входит в игру. Как ваш ответ работает с ассоциативными массивами? '$ А = массив ('а' => 'а', 'B' => 'B'); снята с охраны ($ а [ 'Ь']); print_r (array_values ​​($ а)); '?? – JustOnUnderMillions

+0

'var_dump' что? Что вы использовали для тестирования своего кода? И 'array_values ​​[$ sum]' должен быть 'array_values ​​($ sum);'. я ухожу....... – JustOnUnderMillions

+0

Я использовал unset ($ sum [0] [10]), ключ ушел, но его значения все еще остаются на стороне [9] => – PirateTube

 Смежные вопросы

  • Нет связанных вопросов^_^