使用匿名函数在PHP中生成数组

时间:2013-11-06 18:54:45

标签: php arrays anonymous-function anonymous

我有这个代码块

        $data['cp'][$key]->prominence           = $meta_data['prominence'];
        $data['cp'][$key]->related_link = (function()
        {   $arr = array();
            for ( $i = 1; $i < 4 ; $i++ ) {
                $rldata = array();
                $rldata['title'] = $metadata['related_link_'.$i.'_title'];
                $rldata['title'] = $metadata['related_link_'.$i.'_url'];
                array_push( $arr, $rldata );
                }
            return  $arr;
        });

如您所见,我希望$data['cp'][$key]->related_link等于匿名函数动态生成的多维数组。

然而,当使用print_r时,它只是将键显示为等于Closure.如何编辑代码以使其实际返回数组,而不是仅仅等于闭包。

2 个答案:

答案 0 :(得分:3)

这个怎么样:

<?php

$x = (function () { return array (1, 2, 3); });
$y = call_user_func(function () { return array (1, 2, 3); });
print_r($x);
print_r($y);

?>

结果:

Closure Object
(
)
Array
(
    [0] => 1
    [1] => 2
    [2] => 3
)

答案 1 :(得分:1)

您应该执行该功能,直到现在您只是声明它

$data['cp'][$key]->prominence   = $meta_data['prominence'];
$data['cp'][$key]->related_link = call_user_func(function()
            {   $arr = array();
                for ( $i = 1; $i < 4 ; $i++ ) {
                    $rldata = array();
                    $rldata['title'] = $metadata['related_link_'.$i.'_title'];
                    $rldata['title'] = $metadata['related_link_'.$i.'_url'];
                    array_push( $arr, $rldata );
                    }
                return  $arr;
            });