Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Узнать первый элемент и обновить массив.
Форумы портала PHP.SU » » Вопросы новичков » Узнать первый элемент и обновить массив.

Страниц (1): [1]
 

1. ninzzo - 15 Июля, 2014 - 03:16:34 - перейти к сообщению
Дано ассоциативный массив.

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

И так по порядку.

array_shift по описанию подходит, но она как то странно себя ведет. Есть ли еще нормальные способы?
2. Sail - 15 Июля, 2014 - 08:06:36 - перейти к сообщению
ninzzo пишет:
array_shift по описанию подходит, но она как то странно себя ведет

Как заявлено - так и ведёт Улыбка
Сдвигает все элементы... что в данном случае, однако, излишне.
На основе следующих действий с массивом:

можно и функцию придумать.
3. Edwvee - 15 Июля, 2014 - 13:07:32 - перейти к сообщению
Как вариант:
PHP:
скопировать код в буфер обмена
  1. foreach($arr as &$v)
  2. {
  3.     unset($v);
  4.     break;
  5. }
4. Sail - 15 Июля, 2014 - 14:23:10 - перейти к сообщению
Edwvee пишет:
Как вариант:
PHP:
скопировать код в буфер обмена
  1. foreach($arr as &$v)
  2. {
  3.     unset($v);
  4.     break;
  5. }

Не пройдёт этот вариант.
С задачей изменения значения в массиве ссылка &$v справляется, но вот "развоплотить" элемент массива она в данном случае не в состоянии.
Так что другой вариант:
PHP:
скопировать код в буфер обмена
  1. foreach($arr as $key => $value){
  2.   unset($arr[$key]);
  3.   break;
  4. }

В итоге $value содержит копию значения первого элемента массива.
Остается предохраниться от пустого массива Улыбка
5. avtor.fox - 15 Июля, 2014 - 16:20:17 - перейти к сообщению
Sail)))))

PHP:
скопировать код в буфер обмена
  1. $rgData = array(
  2.     "test", range(0, 12)
  3. );
  4.  
  5. //reset($rgData);
  6.  
  7. if(count($rgData)){
  8.      unset($rgData[key($rgData)]);
  9. }

 

Powered by ExBB FM 1.0 RC1