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
цитата
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:
тоже соглашусь, тем более если до этого не имел дело с переменными переменных
массивы будет самое правильное, так как призваны группировать переменные одного типа
цитата
03/12/10 в 13:39
goodlover
Массив действительно проще, но я всё равно юзаю eval(), хз даже почему.
цитата
03/12/10 в 16:48
st01en
мне массивы как-то туго даются
в 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, а здесь просто фигурные скобки? ну и прочие тупые вопросы
книжки читал, но нифига не понял
я в пхп не силен, сорри
цитата
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, но другие варианты тоже попробую =)) просто интересно. всем +, патамуша я хз, кто тут правее
хотя мне кажется, когда можно вывести переменную, просто методом присвоения ей другого имени - зачем создавать массив?
цитата
05/12/10 в 22:46
goodlover
Похоже, что это уже вопрос религии, кому как проще.
цитата
05/12/10 в 23:01
ibiz
Noobus Boobus писал:
Вы прослушали передачу "как написать мудацкий код".
+100500
цитата
06/12/10 в 01:29
Dr.Syshalt
Noobus Boobus писал:
Вы прослушали передачу "как написать мудацкий код".
Китайский код
, на самом деле
Цитата:
Kитайский код — стиль написания программ, нарушающий принцип НПС («Не повторяй себя»). Китайский подход к программированию требует эксплицитного отказа от циклов, локальных переменных, любых процедур и условных выражений, а также использования технологии copy-and-paste чуть менее, чем везде.
Ну и там даже примеры. Один в один
цитата
06/12/10 в 03:45
CABMIT
st01en писал:
когда можно вывести переменную, просто методом присвоения ей другого имени - зачем создавать массив?
Потому что так правильнее. Верно тут выше заметили: если так делать, это уже получится быдлокод. За это и ругают PHP, что он предоставляет слишком много возможностей написать программу "неправильно", но это не значит что так надо делать.
МОЖНО != НУЖНО
Новая тема
Ответить
Эта страница в полной версии