2013-04-06 6 views
2

У меня есть основная проблема php, которую я не смог решить, и я также хотел бы понять ПОЧЕМУ!PHP: Новая переменная из строки, объединенной с переменной (переменными переменными)

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

$topValue= '$upperValue'.$passNodeMatrixSource; 

echo $topValue; 

ВЫВОД $ upperValueCB

, но я хочу, чтобы результат в качестве значения переменной 10.

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

+2

'$ topValue = $ upperValueCB. $ PassNodeMatrixSource; '? Почему цитаты? – Quasdunk

+0

$ upperValue isn-t переменная это строка – Gamemorize

+0

Хорошо ... Я думаю, что я не совсем понимаю проблему, тогда ... – Quasdunk

ответ

4
$varName = 'upperValue' . $passNodeMatrixSource; 
$topValue = $$varName; 

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

+0

+1 Мне нравится ваше мышление! Но я до сих пор не понимаю, почему! – Gamemorize

+2

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

+0

Я даже -tried- прочитал эту страницу! Еще раз спасибо! – Gamemorize

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

$topValue= 'upperValue'.$passNodeMatrixSource; 

echo ${$topValue}; 
+0

$ upperValue НЕ ПЕРЕМЕН !!! – Gamemorize

+0

Это напечатает «10CB» вместо «10» – JoDev

+0

извините, что моя ошибка написана не так. исправленный. Спасибо – Sabari

4

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

<?php 

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

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

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

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

$topValue= 'upperValue'.$passNodeMatrixSource; 

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

плюс один, но ваш пример неверен/вы не используете $ b – Gamemorize

+0

. Я так не думаю. Вы протестировали его? он выводит 10, потому что имена переменных '$ b' или' $ upperValueCB' будут генерироваться динамически – hek2mgl

+0

Извините, мой плохой вы правы! Еще раз спасибо! – Gamemorize

2

Вы можете сделать это путь:

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

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

echo $topValue; 

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

+0

Спасибо +1, думал, что проблема заключалась в синтаксическом разборе '' not variable naming – Gamemorize

+0

Спасибо за это, но я думаю, что проблема была в методе, используемом для правильного вызова var. ;) – JoDev

 Смежные вопросы

  • Нет связанных вопросов^_^