Php - 理解create_function() - 传递简单变量

时间:2013-05-06 14:47:17

标签: php lambda create-function dynamic-function

我第一次尝试使用动态create_function,到目前为止,没有太大的成功: - )

我的功能是:

 function o99_brsa_custom_widgets() {
        global $wp_meta_boxes;
        global $o99_brsa_options;

        for($i=0; $i> count($o99_brsa_options[content]); $i++) {

            $widgt_id = 'o99_dashboard_widget_dyn' . $i;
            $widgt_name = 'obmek99 widget name' . $i;
            $out = $o99_brsa_options[content][$i];
            $f = create_function(' $out ',' global $out; echo $out;');
            do_the_widgets($widgt_id, $widgt_name, $f);
         }
    } 

do_the_widgets()操作仅接受直接回显并打印窗口小部件的内容。

$o99_brsa_options[content]是经过验证的数组,其中包含$i个元素(每个元素都是内容)。

奇怪的是,$i正在$widgt_id$widgt_name上工作,但在create_function()上,我得到了在所有小部件中打印的相同值。 (echo $out

似乎我不知道如何将一个简单的变量传递给新函数(我在create_function()中使用全局,但它现在几乎没有帮助。

那么,现在我的错误/误解/误用是什么:-) ??

1 个答案:

答案 0 :(得分:19)

create_functionstone agekaᵠ used pen and paper to write applications时,PeeHaa埽 got a beer因为他写了hello would,现在世界变得更好请使用closures }

$f = function ($out) {
    echo $out;
};

$f("Welcome");

有一天你会感谢我,但是你只能create_function使用$fn = create_function( '$x', 'return $x; } $foo = 42; function foo($int) { return $int; ' ); Gordon过去发送给我们的机器来折磨我们)他写了这个

{{1}}

See Live Demo