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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Из каждого значения массива, отдельная переменная

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
manoftheyear
Отправлено: 16 Мая, 2016 - 08:56:56
Post Id


Новичок


Покинул форум
Сообщений всего: 3
Дата рег-ции: Май 2016  


Помог: 0 раз(а)




Здравствуйте! Не можем найти решение с гуглом. Скорей всего я просто неправильно формулирую задачу/вопрос.

Допустим есть массив:
$array = array('one', 'two', 'three', 'four', 'five');

Как из каждого значения массива, сделать отдельную переменную? Имя переменных для значения неважно, хоть: val1, val2... valN.
 
 Top
Viper
Отправлено: 16 Мая, 2016 - 09:39:27
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)






-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
manoftheyear
Отправлено: 16 Мая, 2016 - 09:54:14
Post Id


Новичок


Покинул форум
Сообщений всего: 3
Дата рег-ции: Май 2016  


Помог: 0 раз(а)




Viper пишет:
http://php.net/manual/en/function.list.php

Спасибо.
А можно как нибудь на поток поставить? Допустим в массиве постоянно разное колво значений. Ведь такая конструкция:

PHP:
скопировать код в буфер обмена
  1.  
  2. foreach ($array as $value) {
  3.   list($variable) = $value;
  4.  


Будет просто каждую итерацию перезаписывать переменную $variable.
 
 Top
Строитель Модератор
Отправлено: 16 Мая, 2016 - 10:46:21
Post Id



Участник


Покинул форум
Сообщений всего: 1581
Дата рег-ции: Февр. 2014  
Откуда: Украина


Помог: 74 раз(а)




manoftheyear пишет:
А можно как нибудь на поток поставить?
Если это не помешает решению вашей задачи, то вместо "списка" создайте ассоциативный массив, и тогда можно будет получить имена переменных (и их значения) с помощью функции extract()
PHP:
скопировать код в буфер обмена
  1. $array = array(
  2.     'one'   => 1,
  3.     'two'   => 2,
  4.     'three' => 3,
  5.     'four'  => 4,
  6.     'five'  => 5
  7. );
  8.  
  9. extract($array);
  10.  
  11. echo $one, $two, $three, $four, $five;//12345
 
 Top
Prizma
Отправлено: 16 Мая, 2016 - 11:32:07
Post Id



Посетитель


Покинул форум
Сообщений всего: 463
Дата рег-ции: Июнь 2012  
Откуда: Санкт-Петербург


Помог: 5 раз(а)




manoftheyear пишет:
Допустим есть массив:
$array = array('one', 'two', 'three', 'four', 'five');

Как из каждого значения массива, сделать отдельную переменную? Имя переменных для значения неважно, хоть: val1, val2... valN.

PHP:
скопировать код в буфер обмена
  1. $array = array('one', 'two', 'three', 'four', 'five');
  2. $i = 0;
  3. foreach ($array as $val) {
  4.     $i++;
  5.     $name = 'val' . $i;
  6.     $$name = $val;
  7. }
  8. echo $val1; // one
  9. echo $val2; // two
  10. echo $val3; // three
  11. echo $val4; // four
  12. echo $val5; // five

(Добавление)
или так:
PHP:
скопировать код в буфер обмена
  1. foreach ($array as $val) {
  2.     $i++;
  3.     ${'val' . $i} = $val;
  4. }
 
My status
 Top
Строитель Модератор
Отправлено: 16 Мая, 2016 - 11:56:36
Post Id



Участник


Покинул форум
Сообщений всего: 1581
Дата рег-ции: Февр. 2014  
Откуда: Украина


Помог: 74 раз(а)




Prizma пишет:
или так
Можно без счётчика
PHP:
скопировать код в буфер обмена
  1. $array = array('one', 'two', 'three', 'four', 'five');
  2. foreach ($array as $val) {
  3.     $$val = $val;
  4. }
  5. echo $one; // one
  6. echo $two; // two
  7. echo $three; // three
  8. echo $four; // four
  9. echo $five; // five
 
 Top
manoftheyear
Отправлено: 16 Мая, 2016 - 13:05:41
Post Id


Новичок


Покинул форум
Сообщений всего: 3
Дата рег-ции: Май 2016  


Помог: 0 раз(а)




Во! Спасибо, мужики. То что доктор прописал!

P.S. блин, "спасибо" не щёлкается -=(

(Отредактировано автором: 16 Мая, 2016 - 13:06:24)

 
 Top
Sail
Отправлено: 18 Мая, 2016 - 16:32:18
Post Id



Участник


Покинул форум
Сообщений всего: 1131
Дата рег-ции: Февр. 2014  


Помог: 57 раз(а)




manoftheyear, если чуток модифицировать предложение Строителя (по использованию функции extract()), то получится надежнее и можно будет использовать не ассоциативный массив:
PHP:
скопировать код в буфер обмена
  1. $array = array('one', 'two', 'three', 'four', 'five');
  2. $prefix = 'arrayVar';
  3. $n = extract($array, EXTR_PREFIX_ALL, $prefix);
  4. while(--$n >= 0) {
  5.     $varName = $prefix.'_'.$n;
  6.     $value = ${$varName};
  7.     echo $varName.' => '.$value.'<br>';
  8. }
  9.  
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB