Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Функция, где переменная в переменной, не могу с синтаксисом разобраться

Сообщения:  [1-10] 

 
 автор: neokortex   (11.04.2008 в 10:14)   письмо автору
 
   для: GeorgeIV   (11.04.2008 в 09:54)
 

во! спасибо большое

   
 
 автор: GeorgeIV   (11.04.2008 в 09:54)   письмо автору
 
   для: mechanic   (11.04.2008 в 09:45)
 

Цитата из мануала:

Переменные переменные
Иногда бывает удобно иметь переменными имена переменных. То есть, имя переменной, которое может быть определено и изменено динамически. Обычная переменная определяется примерно таким выражением:

<?php
$a = "hello";
?>

Переменная переменная берет значение переменной и рассматривает его как имя переменной. В вышеприведенном примере hello может быть использовано как имя переменной при помощи двух знаков доллара. То есть:

<?php
$$a = "world";
?>

Теперь в дереве символов PHP определены и содержатся две переменные: $a, содержащая "hello", и $hello, содержащая "world". Таким образом, выражение

<?php
echo "$a ${$a}";
?>

выведет то же, что и


<?php
echo "$a $hello";
?>


то есть, они оба выведут: hello world.

Для того чтобы использовать переменные переменные с массивами, вы должны решить проблему двусмысленности. То есть, если вы напишете $$a[1], обработчику необходимо знать, хотите ли вы использовать $a[1] в качестве переменной, либо вам нужна как переменная $$a, а затем ее индекс [1]. Синтаксис для разрешения этой двусмысленности таков: ${$a[1]} для первого случая и ${$a}[1] для второго.


Внимание
Пожалуйста, обратите внимание, что переменные переменные не могут использоваться с Суперглобальными массивами PHP. Это означает, что вы не можете делать что-то вроде ${$_GET}. Если вы ищете способ использовать суперглобальные переменные и старые HTTP_*_VARS, вы можете попробовать ссылаться на них.

   
 
 автор: mechanic   (11.04.2008 в 09:45)   письмо автору
 
   для: neokortex   (11.04.2008 в 09:35)
 

так я ж говорю! раз переменная нужна за пределами функции, сделай вывод этой переменной в область глобальной видимости!
function post ($name_perem) {
    global ${$name_perem}_status;
    ${$name_perem}_status = (isset($_POST[$name_perem]) ? "мэйл присутствует" : "мэйл отсутствует");
}
post ("email");
echo $email_status; //нахрена тут кавычки..

   
 
 автор: neokortex   (11.04.2008 в 09:35)   письмо автору
 
   для: neokortex   (11.04.2008 в 09:31)
 

например

function post ($name_perem) 
{  if (!isset ($_POST['$name_perem'])) $$name_perem_status="мэйл отсутствует";
    else $$name_perem_status="мэйл присутствует";
};
post ("email");
echo "$email_status";

   
 
 автор: neokortex   (11.04.2008 в 09:31)   письмо автору
 
   для: vitali   (11.04.2008 в 09:25)
 

в общем $$name_perem_status=true; должно принять вид $email_status=true; ну или false, вот т.е. на выходе должна получиться переменная с таким именем $email_status.
может кто привести пример синтаксиса, такое вообще возможно?

   
 
 автор: vitali   (11.04.2008 в 09:25)   письмо автору
 
   для: mechanic   (11.04.2008 в 09:20)
 

для обращения к переменной в переменной используется синтаксис $$ с учетом "области видимости"

   
 
 автор: neokortex   (11.04.2008 в 09:20)   письмо автору
 
   для: DEM   (10.04.2008 в 18:46)
 

извините, это вопрос такой, у меня она не работает, вот я и хочу узнать, как правильно ее написать, скорре всего ошибка в синтаксисе $$

   
 
 автор: mechanic   (11.04.2008 в 09:20)   письмо автору
 
   для: neokortex   (10.04.2008 в 18:39)
 

у тебя $name_perem_status внутри функции никак не определена
может ты хотел написать что то вроде ${$name_perem}_status ?
в любом случае если надо сделать переменную доступной ВНЕ функции, то без global $var; не обойтись

   
 
 автор: DEM   (10.04.2008 в 18:46)   письмо автору
 
   для: neokortex   (10.04.2008 в 18:39)
 

$_POST['$name_perem'] - тут кавычки не нужны
$$name_perem_status - а два $ так и должны быть?

   
 
 автор: neokortex   (10.04.2008 в 18:39)   письмо автору
 
 

делаю одни и те же операции, решил уже написать функцию.
Функция проверяет наличие той или иной переменной, и создает еще одну с указанием результата проверки, у меня вот так

function post ($name_perem) {
                                                       if (!isset ($_POST['$name_perem'])) $$name_perem_status=false;
                                                      else $$name_perem_status=true;
                                                       };
name_perem("email");

   

Сообщения:  [1-10] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования