函数内的动态变量

时间:2010-05-22 03:52:46

标签: php arrays global-variables

为什么这样做:

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 个答案:

答案 0 :(得分:1)

声明$query = $v['host'] == '1';未将$query设置为$v['host'] == '1'表达式。它评估 $v['host'] == '1'并将$query设置为表达式的,其为1或0,具体取决于$v['host']是否为'1'等于$output = array_filter($recordset,myfunction);

{{1}}有效,因为array_filter旨在为其第二个参数采用用户定义的PHP回调函数。

动态编码实际上只能在PHP中使用eval函数(非常危险!)或使用面向对象的object overloading结构实现。

答案 1 :(得分:-1)

你可以使用全局$ query1吗?