array array_slice ( array $array , int $offset [, int $length = NULL [, bool $preserve_keys = false ]] )
Как читать правильно эту строку в документации PHP? Первый параметр означает, что переменная должна передаваться как массив, а вот второй параметр загадочно как-то, расшифруйте.
Спустя 7 минут, 36 секунд (9.05.2012 - 13:21) GET написал(а):
array_slice - извлекает участок массива
$input = array ("a", "b", "c", "d", "e");
$output = array_slice ($input, 2); // возвращает "c", "d" и "e"
$output = array_slice ($input, 2, -1); // возвращает "c", "d"
$output = array_slice ($input, -2, 1); // возвращает "d"
$output = array_slice ($input, 0, 3); // возвращает "a", "b" и "c"
Спустя 9 минут, 42 секунды (9.05.2012 - 13:31) kilogram написал(а):
Как читать в документации второй параметр? Там несколько вложенных квадратных скобок, они сбивают с толку.
Спустя 6 минут, 59 секунд (9.05.2012 - 13:38) kilogram написал(а):
То есть при вызове функции array_slice я могу передать этой функции 4 параметра, но обязательно их должно быть как минимум 2?
array_slice ( $array ,2,3, true);
Спустя 5 минут, 46 секунд (9.05.2012 - 13:43) walerus написал(а):
kilogram Гугл поиск иногда полезен, а также сайты напрямую посвященные PHP языку, например php.su, цитата от туда.
Цитата |
array_slice -- Выбрать срез массива Описание array array_slice ( array array, int offset [, int length [, bool preserve_keys]] ) array_slice() возвращает последовательность элементов массива array, определённую параметрами offset и length. Если параметр offset положителен, последовательность начнётся на расстоянии offset от начала array. Если offset отрицателен, последовательность начнётся на расстоянии offset от конца array. Если в эту функцию передан положительный параметр length, последовательность будет включать length элементов. Если в эту функцию передан отрицательный параметр length, в последовательность войдут все элементы исходного массива, начиная с позиции offset и заканчивая позицией, отстоящей на length элементов от конца array. Если этот параметр будет опущен, в последовательность войдут все элементы исходного массива array, начиная с позиции offset. Обратите внимание, что array_slice() сбрасывает ключи массива. Начиная с PHP 5.0.2 вы можете переопределить это поведение, установив параметр preserve_keys в TRUE. |
Спустя 1 час, 15 минут, 42 секунды (9.05.2012 - 14:59) kilogram написал(а):
А так чтоб сохранялись ключи при замене существующего массива не получиться?
Результат:
Как сделать чтоб не нумировался ключ с нуля, а подставлялось ассоциативное имя ключа?
$input = array("color1"=>"red","color2"=> "green","color3"=>"blue","color4"=>"yellow");
array_splice($input,1,count($input),"orange");
echo '<pre>'.print_r($input,1).'</pre>';
Результат:
Array
(
[color1] => red
[0] => orange
)
Как сделать чтоб не нумировался ключ с нуля, а подставлялось ассоциативное имя ключа?
Спустя 30 минут, 19 секунд (9.05.2012 - 15:29) kilogram написал(а):
Вот так тоже переименовывает ключи в числа.
$mas = array("Имя1"=>"orange","Имя2"=>"magenta");
$input = array("color1"=>"red","color2"=> "green","color3"=>"blue","color4"=>"yellow");
array_splice($input,1,2,$mas);
echo '<pre>'.print_r($input,1).'</pre>';
Цитата |
Array ( [color1] => red [0] => orange [1] => magenta [color4] => yellow ) |
Спустя 23 минуты, 9 секунд (9.05.2012 - 15:53) kilogram написал(а):
Ещё небольшое уточнение. Почему если заменить это:
на это
Почему обрезания значений элементов не произойдет, а выведет просто последние 2 элемента массива без изменений?
array_splice($input,1,2,$mas);
echo '<pre>'.print_r($input,1).'</pre>';
на это
$d = array_splice($input,-2,2,$mas);
echo '<pre>'.print_r($d,1).'</pre>';
Почему обрезания значений элементов не произойдет, а выведет просто последние 2 элемента массива без изменений?
Спустя 4 минуты, 29 секунд (9.05.2012 - 15:57) kilogram написал(а):
Значения последних 2-ух элементов массива $input не меняются почему то
Спустя 16 минут, 42 секунды (9.05.2012 - 16:14) Invis1ble написал(а):
квадратные скобки означают, что параметр является необязательным