1

我有这个代码块

        $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.如何编辑代码,因此它实际上返回数组,而不仅仅是等于闭包。

4

2 回答 2

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
)
于 2013-11-06T19:02:11.273 回答
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;
            });           
于 2013-11-06T19:06:44.760 回答