[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Склеиваем имя переменной!
qari
Есть константы:

//Настройка логов по умолчанию
define('LOG_SMS', 1); //1/0 Вести/Не вести на СМС
define('LOG_EMAIL', 1); //1/0 Вести/Не вести на мыло
define('LOG_ANTIVIR', 1); //1/0 Вести/Не вести логи на антивирус


Так же есть функция которая делает логи

в функции есть такой момент:

//Если логи по умолчанию на 0 то выход с функции
if ($type == "SMS" and LOG_SMS == 0) return;
if ($type == "EMAIL" and LOG_EMAIL == 0) return;
if ($type == "ANTIVIR" and LOG_ANTIVIR == 0) return;

хочу сделать как-то вот так:

//Проверка настроек по умолчанию на ведения логов по определенному типу
if (LOG_{$type} == 0) return false; else print true;

Вот в этой строке и не могу понять как решить проблему склеивания LOG_{$type} Подскажите пожалуйста как склеить имя переменной.



Спустя 14 минут, 54 секунды (19.01.2012 - 11:45) johniek_comp написал(а):
define('LOG_SMS', 1);	 
$type = "SMS";

echo LOG_SMS.$type;

Спустя 1 минута, 58 секунд (19.01.2012 - 11:47) Winston написал(а):
Можно попробовать так
if(eval("return LOG_$type;") == 0) return false; else print true;

А если не сработает, то тогда вместо констант делать обычные переменные и использовать символические ссылки.



Спустя 35 секунд Winston написал(а):
johniek_comp
И что? Работает?

Спустя 3 минуты, 32 секунды (19.01.2012 - 11:50) johniek_comp написал(а):
Winston
Работает, вчера так делал smile.gif

Спустя 2 минуты, 42 секунды (19.01.2012 - 11:53) Winston написал(а):
johniek_comp
Твой код не делат то, что нужно автору.

Спустя 1 минута, 9 секунд (19.01.2012 - 11:54) johniek_comp написал(а):
Winston
Ну значить я не вкурил что ему надо.

Спустя 2 минуты, 10 секунд (19.01.2012 - 11:56) Winston написал(а):
Ему нужно так
define('LOG_SMS', 1);	 
$type = "SMS";
echo LOG_.$type;

Но так пахать не будет.
А вот с помощью переменных это сделать легко.
Вот так:

$LOG_SMS = 1;	 //1/0 Вести/Не вести	 на СМС
$LOG_EMAIL = 1; //1/0 Вести/Не вести на мыло
$LOG_ANTIVIR = 1; //1/0 Вести/Не вести логи на антивирус

if ($type == "SMS" and $LOG_SMS == 0) return;
if ($type == "EMAIL" and $LOG_EMAIL == 0) return;
if ($type == "ANTIVIR" and $LOG_ANTIVIR == 0) return;

$LOG = 'LOG_' . $type;
if ($$LOG == 0) return false; else print true;


То есть с использованием символических ссылок.

Спустя 14 минут, 57 секунд (19.01.2012 - 12:11) vital написал(а):
Цитата (Winston @ 19.01.2012 - 10:56)
Ему нужно так
define('LOG_SMS', 1);  
$type = "SMS";
echo LOG_.$type;

Но так пахать не будет.
А вот с помощью переменных это сделать легко.
Вот так:

$LOG_SMS = 1;  //1/0 Вести/Не вести  на СМС
$LOG_EMAIL = 1;  //1/0 Вести/Не вести  на мыло
$LOG_ANTIVIR =  1;  //1/0 Вести/Не вести  логи на антивирус

if ($type == "SMS" and $LOG_SMS == 0) return;
if ($type == "EMAIL" and $LOG_EMAIL == 0) return;
if ($type == "ANTIVIR" and $LOG_ANTIVIR == 0) return;

$LOG = 'LOG_' . $type;
if ($$LOG == 0) return false; else print true;


То есть с использованием символических ссылок.

Это не ссылки же.. м?

Спустя 1 минута, 30 секунд (19.01.2012 - 12:13) Winston написал(а):
Цитата (vital @ 19.01.2012 - 11:11)
Это не ссылки же.. м?

Вот ссылка
Цитата (Winston @ 19.01.2012 - 10:56)
$LOG = 'LOG_' . $type;
if ($$LOG == 0) return false; else print true;

Спустя 26 минут, 35 секунд (19.01.2012 - 12:39) vital написал(а):
Цитата (Winston @ 19.01.2012 - 11:13)
Цитата (vital @ 19.01.2012 - 11:11)
Это не ссылки же.. м?

Вот ссылка
Цитата (Winston @ 19.01.2012 - 10:56)
$LOG = 'LOG_' . $type;
if ($$LOG == 0) return false; else print true;

Я просто не помнил как оно там правильно называется.
Всегда видел просто переменная переменная wink.gif А ссылки - это когда &;
Ага, глянул ман, это разные ссылки.

Спустя 2 минуты, 8 секунд (19.01.2012 - 12:41) Winston написал(а):
&$a - жесткая ссылка

$b = 'a'; - символическая ссылка на переменную а
$$b - достаем значение $a

Спустя 19 минут, 31 секунда (19.01.2012 - 13:01) qari написал(а):
Цитата (johniek_comp @ 19.01.2012 - 08:45)
define('LOG_SMS', 1);	 
$type = "SMS";

echo LOG_SMS.$type;

Этот момент не работает!

Спустя 1 минута, 30 секунд (19.01.2012 - 13:03) qari написал(а):
Цитата (Winston @ 19.01.2012 - 08:47)
Можно попробовать так
if(eval("return LOG_$type;") == 0) return false; else print true;

А если не сработает, то тогда вместо констант делать обычные переменные и использовать символические ссылки.



Спустя 35 секунд Winston написал(а):
johniek_comp
И что? Работает?

Супер! Спасибо! Работает!

Спустя 2 минуты (19.01.2012 - 13:05) qari написал(а):
Цитата (Winston @ 19.01.2012 - 08:56)
Ему нужно так
define('LOG_SMS', 1);	 
$type = "SMS";
echo LOG_.$type;

Но так пахать не будет.
А вот с помощью переменных это сделать легко.
Вот так:

$LOG_SMS = 1;	 //1/0 Вести/Не вести	 на СМС
$LOG_EMAIL = 1; //1/0 Вести/Не вести на мыло
$LOG_ANTIVIR = 1; //1/0 Вести/Не вести логи на антивирус

if ($type == "SMS" and $LOG_SMS == 0) return;
if ($type == "EMAIL" and $LOG_EMAIL == 0) return;
if ($type == "ANTIVIR" and $LOG_ANTIVIR == 0) return;

$LOG = 'LOG_' . $type;
if ($$LOG == 0) return false; else print true;


То есть с использованием символических ссылок.

Верно, если бы были не константы то оно работало бы походу. Но вот и проблема была именно из за константы!

Спустя 27 минут, 57 секунд (19.01.2012 - 13:32) johniek_comp написал(а):
У меня работает, у вас нет smile.gif Так всегда! ohmy.gif

Спустя 33 минуты, 16 секунд (19.01.2012 - 14:06) asokol написал(а):
gari, Вы можете объяснить, для чего нужно склеить имя переменной? Какой цели Вы пытаетесь достичь?

Спустя 14 минут, 38 секунд (19.01.2012 - 14:20) Winston написал(а):
Цитата (johniek_comp @ 19.01.2012 - 12:32)
У меня работает, у вас нет  Так всегда!

Да? :)
А ты напиши так
define('LOG_SMS', 1);	 
$type = "SMS";
echo LOG_.$type;

Работает? Что выводит?
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.