Как объединить строку и переменную в имя константы? - PullRequest
3 голосов
/ 28 ноября 2011

У меня есть константа, как define ("EMPLOYEE_NAME_ID", "employee");и переменная $ code = EMPLOYEE;

теперь я хочу напечатать, как показано ниже

<?php echo $code.NAME_ID; ?>

Но это печатает только «EMPLOYEE_NAME_ID», и я хочу напечатать «employee».Тогда как распечатать это.Все означает, что я хочу получить переменные из файла lang.

Ответы [ 5 ]

5 голосов
/ 28 ноября 2011

Строка без кавычек в PHP будет анализироваться как константа,
, а если константа не определена,
будет обрабатываться как строка (вместо переменной)

Если вы имеете дело с константой, вы можете использовать постоянную функцию : -

echo constant("{$code}_NAME_ID");

Однако использование этой функции вернет предупреждающее сообщение, если постоянная не определена.
Существуют и другие варианты, например parse_ini_file вы можете посмотреть,
это идеально подходит для обработки большого количества настроек / конфигурации

2 голосов
/ 28 ноября 2011

Лучше было бы использовать константа функция

echo constant($code."NAME_ID");
0 голосов
/ 28 ноября 2011

define("EMPLOYEE_NAME_ID","employee") - это константа, поэтому при объединении с переменной ваш синтаксис должен быть таким:

$temp = "John";

$var = EMPLOYEE_NAME_ID." : ".$temp;

echo $var; {Output : employee : john}
0 голосов
/ 28 ноября 2011

Один из двух является константой, а не переменной. Вы пытались использовать их как переменные переменные (часто array следует отдавать предпочтение в таких обстоятельствах).

Однако вы можете достичь того же эффекта с помощью констант, используя функцию поиска constant():

 <?php echo constant("{$code}_NAME_ID"); ?>

Обратите внимание, что для работы все еще требуется дополнительное подчеркивание _, которое не содержалось ни в вашем постоянном суффиксе, ни в $code.

0 голосов
/ 28 ноября 2011
   define('VAR1', 'my var' );

   $var2 = 'hello';

   echo $var2.''.VAR1;  // period, two apostrophes, period

   // same as if you were doing:

   echo "some string ".$var2." some more string".VAR1;
...