2011-06-02 62 views
1

是否可以修改下面的脚本,以便每个选项的值是一个函数?脚本随机执行2个函数中的1个?

<?php 

$option[0] = 'html option 1'; 
$option[1] = 'html option 2'; 

echo $option[rand()%count($option)]; 
?> 

显然,这不工作:

function get_ads_rotation(){ 
    $option[0] = get_ad_option1(); 
    $option[1] = get_ad_option2(); 
    echo $option[rand()%count($option)]; 

}

(道具约会拜访了上述randomization script

回答

1

直接回答这个问题:变量可以存储自PHP 5.3以来的匿名函数。这将是这样的:

$option[1] = function($args) { /* do something here with $args */ }; 

但是在前面的版本中,你可以实现与call_user_func()类似的东西,在你的选择存储功能名称,然后通过所选择的选项作为第一个参数。例如。

$option[1] = 'functionOne'; 
// ... 
call_user_func($option[1], /* other parameters if needed */); 

但是,如果该值是从用户输入中获取的,则会存在安全漏洞。

因此,更安全的选择是手动调用取决于所选择的选项有switch语句的函数:

switch ($option[rand()%count($option)]) { 
    case 'html option 1' : functionOne(); break; 
    case 'html option 2' : functionTwo(); break; 
    case 'html option 3' : functionThree(); break; 
    // .... 
    default : break; 
} 
+0

甜!关闭测试一些代码。 THanks mkilmanas。 +1 – 2011-06-02 14:51:20

1

Here

$option[0] = 'get_ad_option1'; 
$option[1] = 'get_ad_option2'; 
echo call_user_func($option(...)); 
+0

感谢crazylammer。有用! – 2011-06-02 15:06:17

相关问题