Динамические переменные внутри функций - PullRequest
0 голосов
/ 22 мая 2010

Почему это работает:

function myfunction($v) {
    $query = $v['host'] == '1';
    return ( $query );
}

$output = array_filter($recordset,myfunction);
print_r($output);

Тогда как этот сценарий, который пытается выполнить то же самое с переменными, не делает?

$column1 = 'host';
$value1 = 1;
$query1 = '$v[\''.$column1.'\'] == '.$value1;

function myfunction($v) {
    $query = $GLOBALS['query1'];
    return ( $query );
}

$output = array_filter($recordset,myfunction);
print_r($output);

Любая помощь будет великолепна. Спасибо!

Ответы [ 2 ]

1 голос
/ 22 мая 2010

Оператор $query = $v['host'] == '1'; не устанавливает $query как выражение $v['host'] == '1'.Он оценивает $v['host'] == '1' и устанавливает $query в значение выражения, равное 1 или 0, в зависимости от того, равно ли $v['host'] '1'.

$output = array_filter($recordset,myfunction); работает, потому что array_filter предназначен для принятия пользовательской функции обратного вызова PHP для своего второго аргумента.

Динамическое кодирование действительно возможно только в PHP с использованиемeval (очень опасно!) Или использование объектно-ориентированной структуры с перегрузкой объекта .

0 голосов
/ 22 мая 2010

Можете ли вы использовать глобальный $ query1?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...