在PHP中使用匿名函数生成数组
我有这个代码块在PHP中使用匿名函数生成数组,php,arrays,anonymous-function,anonymous,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
$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]->突出度=$meta_data['突出度];
$data['cp'][$key]->related_link=(函数()
{$arr=array();
对于($i=1;$i<4;$i++){
$rldata=array();
$rldata['title']=$metadata['related_link'.$i.'u title'];
$rldata['title']=$metadata['related_link'.$i.'u url'];
阵列推送($arr,$rldata);
}
返回$arr;
});
如您所见,我希望$data['cp'][$key]->related_link
等于匿名函数动态生成的多维数组
但是,当使用print\r
时,它只会将键显示为等于闭包。
如何编辑代码,使其实际返回数组,而不仅仅是等于闭包。如何:
<?php
$x = (function () { return array (1, 2, 3); });
$y = call_user_func(function () { return array (1, 2, 3); });
print_r($x);
print_r($y);
?>
这个怎么样:
<?php
$x = (function () { return array (1, 2, 3); });
$y = call_user_func(function () { return array (1, 2, 3); });
print_r($x);
print_r($y);
?>
您应该执行这个函数,直到现在您才刚刚声明它
$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;
});
$data['cp'][$key]->突出度=$meta_data['突出度];
$data['cp'][$key]->related\u link=call\u user\u func(函数()
{$arr=array();
对于($i=1;$i<4;$i++){
$rldata=array();
$rldata['title']=$metadata['related_link'.$i.'u title'];
$rldata['title']=$metadata['related_link'.$i.'u url'];
阵列推送($arr,$rldata);
}
返回$arr;
});
您应该执行该函数,直到现在您才刚刚声明它
$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;
});
$data['cp'][$key]->突出度=$meta_data['突出度];
$data['cp'][$key]->related\u link=call\u user\u func(函数()
{$arr=array();
对于($i=1;$i<4;$i++){
$rldata=array();
$rldata['title']=$metadata['related_link'.$i.'u title'];
$rldata['title']=$metadata['related_link'.$i.'u url'];
阵列推送($arr,$rldata);
}
返回$arr;
});
乍一看,在函数定义的末尾加一个():(function(){…whatever…})();不,大脑中有javascript。使用call\u user\u func。下面是例子。我脑子里也有javascript。乍一看,在函数定义的末尾加上一个();不,大脑中有javascript。使用call\u user\u func。接下来就是例子。我的大脑中也有javascript。