PHP: новая переменная из строки, объединенная с переменной (variable-variable)

У меня есть основная проблема php, которую я не смог решить, и я также хотел бы понять ПОЧЕМУ!

 $upperValueCB = 10;
 $passNodeMatrixSource = 'CB';

 $topValue= '$upperValue'.$passNodeMatrixSource;

 echo $topValue;

OUTPUT $ upperValueCB

но я хочу OUTPUT в качестве значения переменной 10.

Как я могу заставить PHP читать фразу $dollar как переменную, а не строку?

4 ответа

Решение
$varName = 'upperValue' . $passNodeMatrixSource;
$topValue = $$varName;

http://php.net/manual/en/language.variables.variable.php

Этот маленький пример может проиллюстрировать, что вы собираетесь делать:

<?php

$a = 'b';
$b = 10;

echo ${$a}; // will output 10

Так что вам придется изменить свой пример на:

$upperValueCB = 10;
$passNodeMatrixSource = 'CB';

$topValue= 'upperValue'.$passNodeMatrixSource;

echo ${$topValue}; // will output 10

Вы можете сделать это следующим образом:

$upperValueCB = 10;
$passNodeMatrixSource = 'CB';

$topValue= ${'upperValue'.$passNodeMatrixSource};

echo $topValue;

Так как upperValueCB это имя переменной, если вы хотите, чтобы PHP понимал, какую переменную использовать, вы должны указать имя переменной.
Для этого вы можете использовать статический способ, как $upperValueCB
или используя строку вроде этого: ${'upperValueCB'}
или используя третью переменную, содержащую имя переменной $var = 'upperValueCB'; $$var;

 $upperValueCB = 10;
 $passNodeMatrixSource = 'CB';

 $topValue= 'upperValue'.$passNodeMatrixSource;

 echo ${$topValue};
Другие вопросы по тегам