С нами с 22.05.09
Сообщения: 639
Рейтинг: 1087
|
Добавлено: 02/12/10 в 16:32 |
Подскажите, как сделать такую фишку.
Есть переменные вида $a_1 , $a_2 и тд. Хочу выводить их рандомно. Но нифига не получается
$rand=(rand(1,5)) ;
echo $а_.$rand ;
выводит только цифру.
если сделать так
$rand="$a_".(rand(1,5)) ;
echo $rand ;
то выводит строку $a_1(или 2, или 5)
а нужно, чтоб выводилась значение переменной.
Короче, как можно склеить имя переменной из нескольких параметров, чтобы выводилось значение этой переменной.
|
|
|
|
С нами с 16.07.06
Сообщения: 886
Рейтинг: 892
|
Добавлено: 02/12/10 в 16:44 |
|
|
|
|
С нами с 22.05.09
Сообщения: 639
Рейтинг: 1087
|
Добавлено: 02/12/10 в 17:21 |
|
|
|
|
С нами с 01.04.07
Сообщения: 4378
Рейтинг: 2970
|
Добавлено: 02/12/10 в 17:46 |
А не проще через массив?
|
|
|
|
С нами с 05.05.05
Сообщения: 1913
Рейтинг: 1134
|
Добавлено: 02/12/10 в 17:47 |
Код: | 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)} ); |
|
|
|
|
С нами с 22.05.09
Сообщения: 639
Рейтинг: 1087
|
Добавлено: 03/12/10 в 09:50 |
спасибо всем, возьму оба примера на заметку =)) А почему через массив проще?
|
|
|
|
С нами с 01.04.07
Сообщения: 4378
Рейтинг: 2970
|
Добавлено: 03/12/10 в 10:54 |
Ну, как бы массивы для таких случаев и созданы.
|
|
|
|
С нами с 05.05.05
Сообщения: 1913
Рейтинг: 1134
|
Добавлено: 03/12/10 в 13:07 |
gimcnuk: тоже соглашусь, тем более если до этого не имел дело с переменными переменных массивы будет самое правильное, так как призваны группировать переменные одного типа
|
|
|
|
Любитель хорошего ;)
С нами с 08.06.07
Сообщения: 16151
Рейтинг: 6269
|
Добавлено: 03/12/10 в 13:39 |
Массив действительно проще, но я всё равно юзаю eval(), хз даже почему.
|
|
|
|
С нами с 22.05.09
Сообщения: 639
Рейтинг: 1087
|
Добавлено: 03/12/10 в 16:48 |
мне массивы как-то туго даются в 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, а здесь просто фигурные скобки? ну и прочие тупые вопросы книжки читал, но нифига не понял
я в пхп не силен, сорри
|
|
|
|
С нами с 20.02.06
Сообщения: 248
Рейтинг: 366
|
Добавлено: 03/12/10 в 16:56 |
Простой пример:
$a = 1;
$b = 'a'; // Имя переменной $a
echo $$b; // Выведет значение переменной $a, то бишь 1. Эквивалентно echo $a;
то же самое:
echo ${$b};
echo ${'a'};
В скобках можно написать любое выражение, которое будет трактоваться как имя переменной
|
|
|
|
С нами с 16.10.09
Сообщения: 343
Рейтинг: 419
|
Добавлено: 03/12/10 в 22:27 |
Вы прослушали передачу "как написать мудацкий код".
|
|
|
|
С нами с 06.03.03
Сообщения: 1650
Рейтинг: 1096
|
Добавлено: 04/12/10 в 16:14 |
CABMIT писал: | Простой пример:
$a = 1;
$b = 'a'; // Имя переменной $a
echo $$b; // Выведет значение переменной $a, то бишь 1. Эквивалентно echo $a;
то же самое:
echo ${$b};
echo ${'a'};
В скобках можно написать любое выражение, которое будет трактоваться как имя переменной |
это самый правильный вариант в этом контексте.
|
|
|
|
С нами с 05.05.05
Сообщения: 1913
Рейтинг: 1134
|
Добавлено: 04/12/10 в 16:26 |
st01en писал: | м
echo '<pre>'; -----вот это например что?
|
это я так всегда вывожу дебаг инфу, в форматированном виде, привычка
можно не писать
|
|
|
|
С нами с 22.05.09
Сообщения: 639
Рейтинг: 1087
|
Добавлено: 05/12/10 в 22:37 |
Использовал eval, но другие варианты тоже попробую =)) просто интересно. всем +, патамуша я хз, кто тут правее
хотя мне кажется, когда можно вывести переменную, просто методом присвоения ей другого имени - зачем создавать массив?
|
|
|
|
Любитель хорошего ;)
С нами с 08.06.07
Сообщения: 16151
Рейтинг: 6269
|
Добавлено: 05/12/10 в 22:46 |
Похоже, что это уже вопрос религии, кому как проще.
|
|
|
|
С нами с 24.10.04
Сообщения: 18881
Рейтинг: 9010
|
Добавлено: 05/12/10 в 23:01 |
Noobus Boobus писал: | Вы прослушали передачу "как написать мудацкий код". |
+100500
|
|
|
|
Чингачгук, вождь красноглазых
С нами с 14.05.04
Сообщения: 4744
Рейтинг: 1824
|
Добавлено: 06/12/10 в 01:29 |
Noobus Boobus писал: | Вы прослушали передачу "как написать мудацкий код". |
Китайский код, на самом деле
Цитата: | Kитайский код — стиль написания программ, нарушающий принцип НПС («Не повторяй себя»). Китайский подход к программированию требует эксплицитного отказа от циклов, локальных переменных, любых процедур и условных выражений, а также использования технологии copy-and-paste чуть менее, чем везде. |
Ну и там даже примеры. Один в один
|
|
|
|
С нами с 20.02.06
Сообщения: 248
Рейтинг: 366
|
Добавлено: 06/12/10 в 03:45 |
st01en писал: | когда можно вывести переменную, просто методом присвоения ей другого имени - зачем создавать массив? |
Потому что так правильнее. Верно тут выше заметили: если так делать, это уже получится быдлокод. За это и ругают PHP, что он предоставляет слишком много возможностей написать программу "неправильно", но это не значит что так надо делать.
МОЖНО != НУЖНО
|
|
|
|