|
|
|
|
array array_slice ( array $array , int $offset [, int $length = NULL [, bool $preserve_keys = false ]] )
|
Как читать правильно эту строку в документации PHP? Первый параметр означает, что переменная должна передаваться как массив, а вот второй параметр загадочно как-то, расшифруйте. | |
|
|
|
|
|
|
|
для: kilogram
(09.05.2012 в 13:17)
| | Не как массив, а должен быть массив, второй, это смещение от начала массива, тип integer, остальные два параметра не обязательны. Первый из них это длина среза, по умолчанию равна hull, тип integer, а второй это отображение ключей массива в результате, булево значение, по умолчанию false - сбрасывать.
Если бы в руководстве была бы только эта строка, тогда да, были бы затруднения, но ведь ниже все русскими словами объясняется. Что может быть непонятного? | |
|
|
|
|
|
|
|
для: confirm
(09.05.2012 в 13:57)
| | А так чтоб сохранялись ключи при замене существующего массива не получиться?
$input = array("color1"=>"red","color2"=> "green","color3"=>"blue","color4"=>"yellow");
array_splice($input,1,count($input),"orange");
echo '<pre>'.print_r($input,1).'</pre>';
|
[u]Результат:[/u]
Array
(
[color1] => red
[0] => orange
)
|
Как сделать чтоб не нумировался ключ с нуля, а подставлялось ассоциативное имя ключа? | |
|
|
|
|
|
|
|
для: kilogram
(09.05.2012 в 15:00)
| | Ключа чего? | |
|
|
|
|
|
|
|
для: kilogram
(09.05.2012 в 15:00)
| | Вот так тоже переименовывает ключи в числа.
$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
)
|
Ещё небольшое уточнение. Почему если заменить это:
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 элемента массива без изменений?
Значения последних 2-ух элементов массива $input не меняются почему то | |
|
|
|
|
|
|
|
для: kilogram
(09.05.2012 в 16:01)
| | Что гласит руководство? А оно гласит - "Обратите внимание, что ключи массива replacement не сохраняются" Что еще объяснять по этому поводу?
Читайте внимательно описание. Ваше print_r() возвращает не результат, а заменяемые элементы входного массива. Распечатайте входной массив, увидите результат. | |
|
|
|
|
|
|
|
для: confirm
(09.05.2012 в 16:29)
| | попробывал вывести сам массив форичем.
$mas = array("Имя1"=>"orange","Имя2"=>"magenta");
$input = array("color1"=>"red","color2"=> "green","color3"=>"blue","color4"=>"yellow","color5"=>"brown",);
$d = array_splice($input,-2,2,$mas);
echo '<pre>'.print_r($d,1).'</pre>';
foreach($input as $a=>$b)
echo $a.'=> '.$b.'<br /> ';
|
Получается что последние 2 элемента массива инпут заменились ключи на 0 и 1 и значения соответственно.
Array
(
[color4] => yellow
[color5] => brown
)
color1=> red
color2=> green
color3=> blue
0=> orange
1=> magenta
|
| |
|
|
|
|
|
|
|
для: kilogram
(09.05.2012 в 16:37)
| | И что? | |
|
|
|
|
|
|
|
для: confirm
(09.05.2012 в 16:40)
| | Вы написали:
Распечатайте входной массив, увидите результат.
|
Распечатал, увидел что ключи и значения поменялись все-таки после этой функции | |
|
|
|
|
|
|
|
для: kilogram
(09.05.2012 в 16:45)
| |
<?
array_splice($input, -2,2, $mas);
print_r($input);
//не верится глазам?
//тогда так
echo '<br>'.implode(',',array_keys($input)).'<br>'
.implode(',',array_values($input));
//можете и циклом пройти, результат все равно такой же будет
|
А вы что опять делаете? | |
|
|
|