Master-X
Форум | Новости | Статьи
Главная » Форум » Программинг, Скрипты, Софт, Сервисы » 
Тема: Как склеить имя переменной из нескольких переменных?
цитата
02/12/10 в 16:32
 st01en
Подскажите, как сделать такую фишку.
Есть переменные вида $a_1 , $a_2 и тд. Хочу выводить их рандомно. Но нифига не получается
$rand=(rand(1,5)) ;
echo $а_.$rand ;
выводит только цифру.
если сделать так
$rand="$a_".(rand(1,5)) ;
echo $rand ;
то выводит строку $a_1(или 2, или 5)
а нужно, чтоб выводилась значение переменной.
Короче, как можно склеить имя переменной из нескольких параметров, чтобы выводилось значение этой переменной.
цитата
02/12/10 в 16:44
 arma
Через eval()

http://php.net/manual/en/function.eval.php
Там пример есть - сразу все поймешь.
цитата
02/12/10 в 17:21
 st01en
smail54.gif
цитата
02/12/10 в 17:46
 Alexandur
А не проще через массив?
цитата
02/12/10 в 17:47
 freeek
Код:
  error_reporting( 0 );

  $a_1 = 1;
  $a_2 = 2;
  $a_3 = 3;
  $a_4 = 4;
  $a_5 = 5;

  echo '<pre>';
  print_r( ${'a_' . mt_rand(1, 5)} );
цитата
03/12/10 в 09:50
 st01en
спасибо всем, возьму оба примера на заметку =)) А почему через массив проще?
цитата
03/12/10 в 10:54
 Alexandur
Ну, как бы массивы для таких случаев и созданы.
цитата
03/12/10 в 13:07
 freeek
gimcnuk: тоже соглашусь, тем более если до этого не имел дело с переменными переменных icon_smile.gif массивы будет самое правильное, так как призваны группировать переменные одного типа
цитата
03/12/10 в 13:39
 goodlover
Массив действительно проще, но я всё равно юзаю eval(), хз даже почему.
цитата
03/12/10 в 16:48
 st01en
мне массивы как-то туго даются smail101.gif в eval все ясно - преобразовать что-то одно во что-то другое. а массивы...

$a_1 = 1;
$a_2 = 2;
$a_3 = 3;
$a_4 = 4;
$a_5 = 5;

echo '<pre>'; -----вот это например что?

print_r( ${'a_' . mt_rand(1, 5)} );
почему в одном случае надо array, а здесь просто фигурные скобки? ну и прочие тупые вопросы smail101.gif книжки читал, но нифига не понял smail101.gif
я в пхп не силен, сорри
цитата
03/12/10 в 16:56
 CABMIT
Простой пример:

$a = 1;
$b = 'a'; // Имя переменной $a

echo $$b; // Выведет значение переменной $a, то бишь 1. Эквивалентно echo $a;

то же самое:

echo ${$b};
echo ${'a'};

В скобках можно написать любое выражение, которое будет трактоваться как имя переменной
цитата
03/12/10 в 22:27
 Noobus Boobus
Вы прослушали передачу "как написать мудацкий код".
цитата
04/12/10 в 16:14
 webboxxx
CABMIT писал:
Простой пример:
$a = 1;
$b = 'a'; // Имя переменной $a
echo $$b; // Выведет значение переменной $a, то бишь 1. Эквивалентно echo $a;
то же самое:
echo ${$b};
echo ${'a'};
В скобках можно написать любое выражение, которое будет трактоваться как имя переменной


это самый правильный вариант в этом контексте.
цитата
04/12/10 в 16:26
 freeek
st01en писал:
м
echo '<pre>'; -----вот это например что?


это я так всегда вывожу дебаг инфу, в форматированном виде, привычка

можно не писать
цитата
05/12/10 в 22:37
 st01en
Использовал eval, но другие варианты тоже попробую =)) просто интересно. всем +, патамуша я хз, кто тут правее smail101.gif
хотя мне кажется, когда можно вывести переменную, просто методом присвоения ей другого имени - зачем создавать массив?
цитата
05/12/10 в 22:46
 goodlover
Похоже, что это уже вопрос религии, кому как проще.
цитата
05/12/10 в 23:01
 ibiz
Noobus Boobus писал:
Вы прослушали передачу "как написать мудацкий код".


+100500 smail101.gif
цитата
06/12/10 в 01:29
 Dr.Syshalt
Noobus Boobus писал:
Вы прослушали передачу "как написать мудацкий код".


Китайский код, на самом деле

Цитата:
Kитайский код — стиль написания программ, нарушающий принцип НПС («Не повторяй себя»). Китайский подход к программированию требует эксплицитного отказа от циклов, локальных переменных, любых процедур и условных выражений, а также использования технологии copy-and-paste чуть менее, чем везде.


Ну и там даже примеры. Один в один
цитата
06/12/10 в 03:45
 CABMIT
st01en писал:
когда можно вывести переменную, просто методом присвоения ей другого имени - зачем создавать массив?

Потому что так правильнее. Верно тут выше заметили: если так делать, это уже получится быдлокод. За это и ругают PHP, что он предоставляет слишком много возможностей написать программу "неправильно", но это не значит что так надо делать.

МОЖНО != НУЖНО


Эта страница в полной версии