PHP Puzzler: поиск значения переменной переменной, когда значение переменной включает косую черту
Я долго ломал голову над этим и надеюсь, что у кого-то есть идея. Вот код:
<?php
$Trucking_CPA="25.00"; // set price
$Trucking_price="\$Trucking_CPA"; // I know, that slash is the problem - but I need it there for other purposes in the program.
echo $Trucking_CPA."<br />"; // prints $25.00 - that's fine and expected
echo $Trucking_price."<br />"; // prints $Trucking_CPA (with no slash for some reason...)
echo $$Trucking_price."<br />"; // With double $ - Gives error: Notice: Undefined variable: $Trucking_CPA - why?
$anothertry1 = ${$Trucking_price};
echo $anothertry1."<br />"; // With double $ in brackets - Gives error: Notice: Undefined variable: $Trucking_CPA - why?
$anothertry2 = ${stripslashes($Trucking_price)};
echo $anothertry2."<br />"; // With double $ in brackets and stripslashes - Gives error: Notice: Undefined variable: $Trucking_CPA - why?
?>
Мне нужно иметь эту косую черту там, чтобы она не конвертировалась в другом месте, потому что логика проверяет ее, и в этом случае она не может быть равна значению переменной.
У кого-нибудь есть идея, как заставить PHP дать мне 25,00, вызвав $Trucking_price?
Обновление - на этот вопрос превосходно ответили ниже, так что просто перепишу для будущих пользователей, сталкивающихся с этим:
<?php
$Trucking_CPA="25.00"; // set price
$Trucking_price="\$Trucking_CPA";
echo ${substr($Trucking_price,1)}; // returns 25.00 instead of $Trucking_CPA
?>
1 ответ
Решение
Вы можете попробовать следующее:
echo ${substr($Trucking_price,1)};
Это будет резать $
из строки $Trucking_price
и вернуться Trucking_CPA
. После этого вы можете вызвать эту переменную как ${'Trucking_CPA'}
,