2013-05-26 3 views
2

Это мой случай. (Я изменил мой случай)PHP переменная поведение или условность

У меня есть переменная скажем $ var1 из базы данных и метод испытания ($ var1)

$var1 = getFromDatabase(); 
//now $var1 contaion "This is new variable".$var2 

Затем в методе испытаний я сделаю простую операцию строки из уравнения $ var1.

test($var1){ 
    $var2 = "variable 2"; 
    //I want to extract $var1 so that string will be combined 
    $value = $var1; 

    $value_expected = "This is new variable".$var2; 
} 

Но значение $ будет содержать «Это новая переменная». $ Var2. Я ожидаю, что $ value contains Это новая переменная 2 из уравнения $ var1.

Есть ли решение? Можно ли это сделать?

Thank you.

ответ

1

Не используйте кавычки. $var1 = $var2 + $var3;

Цитаты означает, что вы работаете со строками

Кроме того, вы не можете получить доступ к локальным переменным, как это. Переменные, объявленные внутри функции, не будут доступны за ее пределами. И даже если бы вы могли бы не получить то, что ожидаете, потому что перед их инициализацией вы используете $ var2 и $ var3.

+0

спасибо за ответ ур. 1. Я не получаю доступ к $ var2 и $ var3 извне. 2. Я хочу сделать динамику $ var1. $ var1 содержит уравнение. то метод test вычислит простое уравнение из $ var1. – guurnita

0

То, что вы ищете, возможно, передавая функции вокруг. Например:

function test($var1) { 
    $var2 = 4; 
    $var3 = 5; 

    // this line calls the function named in $var1 with $var2 and $var3 as arguments 
    $value = call_user_func($var1, $var2, $var3); 

    // in later versions of PHP you can do this instead: 
    // $value = $var1($var2, $var3); 
} 

function addThem($a, $b) { 
    return $a + $b; 
} 
test('addThem'); 

Обратите внимание, что метод объединения переменного передаются в виде функции (или, по крайней мере, ближайший РНР пропускания функции вокруг; РНР является нечетным языком). Также значения, которые он использует, должны передаваться как параметры.

+0

Thx для ответа ур. да, это будет работать в моем первом случае, хотя это займет много времени. Посмотрите мой второй случай. Возможно ли, чтобы $ value имел тот же результат с $ value_expected? – guurnita

+1

@guurnita Ваш обновленный вопрос даст вам серьезные риски для безопасности. Лучшим решением является использование заранее определенных токенов типа '<>', которые могут быть помещены в строку, а затем 'str_replace' их в функции (вы можете даже« str_replace »имена' $ var1', но это похоже на это будет смущать пользователей) – Dave

+0

yaah .. thx наверняка за идею .. – guurnita

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