Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ФОкусы с массивами =-) 
:(
    Опции темы
Muerto
Дата 3.10.2010, 18:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1207
Регистрация: 23.9.2006

Репутация: 3
Всего: 4



Код

$array = array(1 => 0, 2, 3, 4);

array_splice($array, 3, count($array), array_merge(array('x'), array_slice($array, 3))); 

print_r($array);



Никак не пойму почему выходит

Array ( [0] => 0 [1] => 2 [2] => 3 [3] => x [4] => 4 ) 



СОбственно первое я понимаю, array_splice индексы убивает поэтому идет с нуля...

array_merge вставляет в конец, поэтому x у нас не в начале... но откуда 4ока то не пойму...
результат array_slice($array, 3) будет Array ( [0] => 0 [1] => 2 [2] => 3 ) 


Вопрос даже упростить можно...
не понял почему

Код

$array = array(1 => 0, 2, 3, 4);

$array=array_merge(array('x'), array_slice($array, 3));

print_r($array);


выдает Array ( [0] => x [1] => 4 ) 

Я что то упускаю...


--------------------
user posted image
PM MAIL   Вверх
Amphiluke
Дата 3.10.2010, 18:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


   ☽
***


Профиль
Группа: Завсегдатай
Сообщений: 1253
Регистрация: 26.8.2009

Репутация: нет
Всего: 112



Не понял, что вас не устраивает. Все выполняется как положено. 
array_slice($array, i, j) возвращает массив, сформированный из массива $array в первом параметре, начиная с элемента за индексом i и с количеством элементов, равным j. Если j опущено (как у вас), то копируются все элементы до конца массива $array.


PM   Вверх
Muerto
Дата 3.10.2010, 19:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1207
Регистрация: 23.9.2006

Репутация: 3
Всего: 4



Amphiluke, Извините но думаю что вы не правы, я читая ваши слова понял где моя ошибка была!


Откуда X? все очень просто... в тот час как функция array_slice($array, 3)

вернула бы 1 => 0, 2, 3 а она это и делает, в данном случае она выдаст 4...

А почему?

Потому что return От array splice дает то что осталось, а не сам $array
$x=array_slice($array, 3);
По моей  теории
$x=array(0=>4)

А если делать print_r $array то будет  1 => 0, 2, 3

ВОт они и фокусы  smile 

Это из серии strcmp если оба значения равны, то возвращает 0, логика про эту функцию и не знала  smile 

Это сообщение отредактировал(а) Muerto - 3.10.2010, 19:25


--------------------
user posted image
PM MAIL   Вверх
Amphiluke
Дата 3.10.2010, 19:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


   ☽
***


Профиль
Группа: Завсегдатай
Сообщений: 1253
Регистрация: 26.8.2009

Репутация: нет
Всего: 112



Возможно, я где-то недопонял вас. Но до меня до сих пор все еще не дойдет, почему это array_slice($array, 3) должна, по-вашему, вернуть 1 => 0, 2, 3? У меня такой код в чистом виде
Код

$array = array(1 => 0, 2, 3, 4);
$array = array_slice($array, 3);
print_r($array);

выдает Array ( [0] => 4 ). И это выглядит очень даже логичным… Не?
PM   Вверх
Muerto
Дата 3.10.2010, 20:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1207
Регистрация: 23.9.2006

Репутация: 3
Всего: 4



Amphiluke, 
Сравните

Код

$array = array(1 => 0, 2, 3, 4);
$array = array_slice($array, 3);
print_r($array);


и
Код

$array = array(1 => 0, 2, 3, 4);
array_slice($array, 3);
print_r($array);


И вы поймете о чем я 

В первом варианте в нашем массиве будет 4, а в втором, все кроме 4...

Функця array_slice($array, 3); аналог серии array_pop

Pop возвращает элемент который был убран, и эта функция тоже...
В тот час как массив на который мы делали поп потерял последний элемент

Это сообщение отредактировал(а) Muerto - 3.10.2010, 20:46


--------------------
user posted image
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0958 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.