Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Правильное чтение документации на PHP
 
 автор: kilogram   (09.05.2012 в 13:17)   письмо автору
 
 

array array_slice ( array $array , int $offset [, int $length = NULL [, bool $preserve_keys = false ]] )


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

  Ответить  
 
 автор: confirm   (09.05.2012 в 13:57)   письмо автору
 
   для: kilogram   (09.05.2012 в 13:17)
 

Не как массив, а должен быть массив, второй, это смещение от начала массива, тип integer, остальные два параметра не обязательны. Первый из них это длина среза, по умолчанию равна hull, тип integer, а второй это отображение ключей массива в результате, булево значение, по умолчанию false - сбрасывать.

Если бы в руководстве была бы только эта строка, тогда да, были бы затруднения, но ведь ниже все русскими словами объясняется. Что может быть непонятного?

  Ответить  
 
 автор: kilogram   (09.05.2012 в 15:00)   письмо автору
 
   для: 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
)


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

  Ответить  
 
 автор: confirm   (09.05.2012 в 16:01)   письмо автору
 
   для: kilogram   (09.05.2012 в 15:00)
 

Ключа чего?

  Ответить  
 
 автор: kilogram   (09.05.2012 в 16:01)   письмо автору
 
   для: 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 не меняются почему то

  Ответить  
 
 автор: confirm   (09.05.2012 в 16:29)   письмо автору
 
   для: kilogram   (09.05.2012 в 16:01)
 

Что гласит руководство? А оно гласит - "Обратите внимание, что ключи массива replacement не сохраняются" Что еще объяснять по этому поводу?
Читайте внимательно описание. Ваше print_r() возвращает не результат, а заменяемые элементы входного массива. Распечатайте входной массив, увидите результат.

  Ответить  
 
 автор: kilogram   (09.05.2012 в 16:37)   письмо автору
 
   для: 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

  Ответить  
 
 автор: confirm   (09.05.2012 в 16:40)   письмо автору
 
   для: kilogram   (09.05.2012 в 16:37)
 

И что?

  Ответить  
 
 автор: kilogram   (09.05.2012 в 16:45)   письмо автору
 
   для: confirm   (09.05.2012 в 16:40)
 

Вы написали:
Распечатайте входной массив, увидите результат.


Распечатал, увидел что ключи и значения поменялись все-таки после этой функции

  Ответить  
 
 автор: confirm   (09.05.2012 в 17:10)   письмо автору
 
   для: 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));
//можете и циклом пройти, результат все равно такой же будет

А вы что опять делаете?

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования