Javascript-форум (https://javascript.ru/forum/)
-   Серверные языки и технологии (https://javascript.ru/forum/server/)
-   -   Правильное чтение документации на PHP (https://javascript.ru/forum/server/28147-pravilnoe-chtenie-dokumentacii-na-php.html)

kilogram 09.05.2012 13:16

Правильное чтение документации на PHP
 
array array_slice ( array $array , int $offset [, int $length = NULL [, bool $preserve_keys = false ]] )


Как читать правильно эту строку в документации PHP? Первый параметр означает, что переменная должна передаваться как массив, а вот второй параметр загадочно как-то, расшифруйте.

Kolyaj 09.05.2012 13:29

Целое число.

kilogram 09.05.2012 13:31

Как читать в документации второй параметр? Там несколько вложенных квадратных скобок, они сбивают с толку.

kilogram 09.05.2012 13:38

То есть при вызове функции array_slice я могу передать этой функции 4 параметра, но обязательно их должно быть как минимум 2?

array_slice ( $array ,2,3, true);

Kolyaj 09.05.2012 14:52

В квадратных скобках пишутся необязательные параметры, да.

kilogram 09.05.2012 15:01

А так чтоб сохранялись ключи при замене существующего массива не получиться?

Код:

$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
)

Как сделать чтоб не нумировался ключ с нуля, а подставлялось ассоциативное имя ключа?

kilogram 09.05.2012 15:30

Вот так тоже переименовывает ключи в числа.

$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
)

kilogram 09.05.2012 15:54

Ещё небольшое уточнение. Почему если заменить это:

Код:

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 элемента массива без изменений?

kilogram 09.05.2012 15:59

Значения последних 2-ух элементов массива $input не меняются почему то


Часовой пояс GMT +3, время: 19:36.