Intereting Posts
MySQL получает строку (ы) между двумя # / несколькими парами # Отобразить подробную группу деталей по имени поставщиков Стрип-теги и все между ними Преобразование функции из рекурсии в итерацию Использование идентификатора таблицы отношений в других таблицах перенаправить, если url содержит определенную строку, используя htaccess Можно ли изменить сообщение перенаправления по умолчанию в Symfony? Как сохранить данные в области приложения в PHP? Как сделать навигационную панель прокруткой со страницей? Вставка записей календаря Google с учетной записью службы Когда следует использовать stdClass и когда я должен использовать массив в коде php oo? CakePHP TwigView Plugin отсутствует ошибка просмотра Проблема с кешем Symfony2 LiipImagineBundle Взаимное исключение PHP в файле / MySQL, считывание и выполнение операторов из файла с использованием perl Как сделать глубокую копию объекта DateTime?

Array_splice действует как array_slice?

У меня проблемы с пониманием того, что делают array_splice и array_slice. Из того, что я могу сказать, array_splice должен возвращать массив ПОСЛЕ вынимания определенных элементов, а array_slice должен извлекать срез массива.

Следующий код из руководства php.net/array_splice показывает, что этот код должен работать.

$input = array("red", "green", "blue", "yellow"); var_dump(array_splice($input, 2)); // $input is now array("red", "green") $input = array("red", "green", "blue", "yellow"); var_dump(array_slice($input, 2)); // $input is now array("red", "green") 

Однако, когда я запускаю этот код на php 5.3.4 и 5.1.6, результаты

 array 0 => string 'blue' (length=4) 1 => string 'yellow' (length=6) array 0 => string 'blue' (length=4) 1 => string 'yellow' (length=6) 

Не понимаю ли я руководство или это ошибка? Мне кажется, что array_splice действует так же, как array_slice

Кроме того, похоже, что это не замена

 $input = array("red", "green", "blue", "yellow"); var_dump(array_splice($input, 2, 2, array('foo'))); 

выходы

 array 0 => string 'blue' (length=4) 1 => string 'yellow' (length=6) 

Может кто-то подтвердить это ошибка, и если не объяснить, как это СЛЕДУЕТ работать?

РЕДАКТИРОВАТЬ:

Nvm Я понял это. Вместо использования var_dump в array_splice я должен использовать $ input, поскольку array_splice меняет $ input вместо того, чтобы возвращать новые значения.

array_slice возвращает значения, а array_splice устанавливает значения в $ input.

MOD, пожалуйста, закройте или удалите это.

Из документов :

Описание
array array_splice (array & $ input, int $ offset [, int $ length = 0 [, mixed $ replacement]])

Удаляет элементы, обозначенные смещением и длиной из входного массива, и заменяет их элементами массива замещения, если они указаны.

Возвращаемые значения

Возвращает массив, состоящий из извлеченных элементов.

Вы просто ужасно сбиты с толку.

splice удаляет подмножество элементов массива и вставляет новые элементы в их местоположение, в основном заменяя их. slice просто подтягивает подмножество элементов массива в отдельный массив.

Там, где вы недопонимаете, результат отрезка возвращается из функции как отдельный массив, где сращивание фактически манипулирует массивом, который передается в качестве аргумента.

В вашем первом примере кода в комментарии говорится, что то, что осталось в переменной $input – это array("red", "green") но не упоминает содержимое, возвращаемое var_dump что и является результатом ваших попыток