Реклама на сайте Advertise with us

Как склеить имя переменной из нескольких переменных?

Расширенный поиск по форуму
 
Новая тема Новая тема   
Автор
Поиск в теме:



С нами с 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)
а нужно, чтоб выводилась значение переменной.
Короче, как можно склеить имя переменной из нескольких параметров, чтобы выводилось значение этой переменной.

0
 



С нами с 16.07.06
Сообщения: 886
Рейтинг: 892

Ссылка на сообщениеДобавлено: 02/12/10 в 16:44       Ответить с цитатойцитата 

Через eval()

http://php.net/manual/en/function.eval.php
Там пример есть - сразу все поймешь.

3
 



С нами с 22.05.09
Сообщения: 639
Рейтинг: 1087

Ссылка на сообщениеДобавлено: 02/12/10 в 17:21       Ответить с цитатойцитата 

smail54.gif

0
 



С нами с 01.04.07
Сообщения: 4378
Рейтинг: 2970

Ссылка на сообщениеДобавлено: 02/12/10 в 17:46       Ответить с цитатойцитата 

А не проще через массив?

3
 



С нами с 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)} );

3
 



С нами с 22.05.09
Сообщения: 639
Рейтинг: 1087

Ссылка на сообщениеДобавлено: 03/12/10 в 09:50       Ответить с цитатойцитата 

спасибо всем, возьму оба примера на заметку =)) А почему через массив проще?

0
 



С нами с 01.04.07
Сообщения: 4378
Рейтинг: 2970

Ссылка на сообщениеДобавлено: 03/12/10 в 10:54       Ответить с цитатойцитата 

Ну, как бы массивы для таких случаев и созданы.

3
 



С нами с 05.05.05
Сообщения: 1913
Рейтинг: 1134

Ссылка на сообщениеДобавлено: 03/12/10 в 13:07       Ответить с цитатойцитата 

gimcnuk: тоже соглашусь, тем более если до этого не имел дело с переменными переменных icon_smile.gif массивы будет самое правильное, так как призваны группировать переменные одного типа

3
 

Любитель хорошего ;)

С нами с 08.06.07
Сообщения: 16151
Рейтинг: 6269


Передовик Master-X (01.06.2009) Передовик Master-X (01.10.2009) Передовик Master-X (16.10.2009) Передовик Master-X (01.12.2009) Передовик Master-X (01.11.2010) Ветеран трепа Master-X (16.02.2011)
Ссылка на сообщениеДобавлено: 03/12/10 в 13:39       Ответить с цитатойцитата 

Массив действительно проще, но я всё равно юзаю eval(), хз даже почему.

Отличные серверы от SGManaged!

3
 



С нами с 22.05.09
Сообщения: 639
Рейтинг: 1087

Ссылка на сообщениеДобавлено: 03/12/10 в 16:48       Ответить с цитатойцитата 

мне массивы как-то туго даются 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
я в пхп не силен, сорри

0
 



С нами с 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'};

В скобках можно написать любое выражение, которое будет трактоваться как имя переменной

3
 



С нами с 16.10.09
Сообщения: 343
Рейтинг: 419

Ссылка на сообщениеДобавлено: 03/12/10 в 22:27       Ответить с цитатойцитата 

Вы прослушали передачу "как написать мудацкий код".

telegram: @nbsbbs

3
 



С нами с 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'};
В скобках можно написать любое выражение, которое будет трактоваться как имя переменной


это самый правильный вариант в этом контексте.

3
 



С нами с 05.05.05
Сообщения: 1913
Рейтинг: 1134

Ссылка на сообщениеДобавлено: 04/12/10 в 16:26       Ответить с цитатойцитата 

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


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

можно не писать

3
 



С нами с 22.05.09
Сообщения: 639
Рейтинг: 1087

Ссылка на сообщениеДобавлено: 05/12/10 в 22:37       Ответить с цитатойцитата 

Использовал eval, но другие варианты тоже попробую =)) просто интересно. всем +, патамуша я хз, кто тут правее smail101.gif
хотя мне кажется, когда можно вывести переменную, просто методом присвоения ей другого имени - зачем создавать массив?

0
 

Любитель хорошего ;)

С нами с 08.06.07
Сообщения: 16151
Рейтинг: 6269


Передовик Master-X (01.06.2009) Передовик Master-X (01.10.2009) Передовик Master-X (16.10.2009) Передовик Master-X (01.12.2009) Передовик Master-X (01.11.2010) Ветеран трепа Master-X (16.02.2011)
Ссылка на сообщениеДобавлено: 05/12/10 в 22:46       Ответить с цитатойцитата 

Похоже, что это уже вопрос религии, кому как проще.

Отличные серверы от SGManaged!

0
 



С нами с 24.10.04
Сообщения: 18881
Рейтинг: 9010


Передовик Master-X (16.03.2006) Передовик Master-X (01.04.2006) Передовик Master-X (16.04.2006) Передовик Master-X (01.05.2006) Передовик Master-X (01.11.2006) Ветеран трепа Master-X ()
Ссылка на сообщениеДобавлено: 05/12/10 в 23:01       Ответить с цитатойцитата 

Noobus Boobus писал:
Вы прослушали передачу "как написать мудацкий код".


+100500 smail101.gif

0
 

Чингачгук, вождь красноглазых

С нами с 14.05.04
Сообщения: 4744
Рейтинг: 1824

Ссылка на сообщениеДобавлено: 06/12/10 в 01:29       Ответить с цитатойцитата 

Noobus Boobus писал:
Вы прослушали передачу "как написать мудацкий код".


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

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


Ну и там даже примеры. Один в один

0
 



С нами с 20.02.06
Сообщения: 248
Рейтинг: 366

Ссылка на сообщениеДобавлено: 06/12/10 в 03:45       Ответить с цитатойцитата 

st01en писал:
когда можно вывести переменную, просто методом присвоения ей другого имени - зачем создавать массив?

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

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

0
 
Новая тема Новая тема   

Текстовая реклама в форме ответа
Заголовок и до четырех строчек текста
Длина текста до 350 символов
Купить рекламу в этом месте!


Перейти:  



Спонсор раздела Стань спонсором этого раздела!

Реклама на сайте Advertise with us

Опросы

Рецепт новогоднего блюда 2022



Обсудите на форуме обсудить (11)
все опросы »