PHP массив: перенумеровать элементы при добавлении нового элемента - PullRequest
2 голосов
/ 23 сентября 2011

У меня есть массив PHP с элементами:

$myarray = array ( "tom", "dick", "Harry" );

. Мне нужно сохранить массив размером всего 3 элемента , Мне нужно добавить новый элемент "Джерри", так что массив теперь выглядит как

 $myarray = array ( "jerry", "tom", "dick");

Таким образом, я как-то перемещаю элементы, и четвертый выпадает, а новый элемент идет в начале. Я мог бы написать все это вручную, перенумеровать элементы и т. Д. И т. Д.

Мне просто стало интересно, есть ли более быстрый способ сделать это.

Большое спасибо! J

Ответы [ 3 ]

7 голосов
/ 23 сентября 2011

Один из способов сделать это - использовать array_pop и array_unshift:

# Pop the last element off the array
array_pop($myarray);

# Insert the new value
array_unshift($myarray, "jerry");

Или вы можете использовать array_merge и array_slice:

$myarray = array_merge(array("jerry"), array_slice($myarray, 0, 2));

Оба эти метода сбрасывают ключи, поэтому они будут перенумерованы с 0 на 2.

1 голос
/ 23 сентября 2011

Возможно, вы захотите взглянуть на SplQueue . При каждом добавлении нового элемента проверяйте, больше ли количество элементов, чем x, и при необходимости удалите его.

0 голосов
/ 23 сентября 2011
$myarray = array ( "tom", "dick", "Harry" );
array_pop( $myarray ); //remove the last element
array_unshift( $myarray, "jerry" ); //prepend the new element
...