我有这个代码块
$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.
如何编辑代码以使其实际返回数组,而不是仅仅等于闭包。
答案 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;
});