考虑到我使用 PHP 的时间,我为问这个问题感到羞耻,但现在我似乎太累了,无法自己解决。
我有一个 php 变量函数,它获取一个 CSV 文件并将数据存储到一个数组中。
$csvdata = function(){
// Get CSV data to array
return $array;
}
这个数组在不同情况下被其他函数使用。
问题是我虽然这个函数只会运行一次,但我只是注意到每次我使用 var $csvdata 时它都会运行。
我想要的是创建一个只运行一次的自激发函数,并将数据存储到一个数组中,我可以根据需要多次使用该数组,而无需 PHP 每次都重新执行获取 csv 和存储数据的过程我使用 $csvdata。
这真的很奇怪,因为我觉得如果我的大脑在跟我开玩笑...... (大脑:“很明显......我知道答案但我不会告诉你”)
对不起 friend
最佳答案
您可以使用 call_user_func 即时调用新创建的函数:
$csvdata = call_user_func(function(){
// Get CSV data to array
return $array;
});
然后只需将 $csvdata
作为变量引用(不带括号)。
说明
文档将 call_user_func
的参数称为回调,这就是它的含义:您将函数引用传递给它,它是 call_user_func
的实现为你调用你的函数(“给你回电话”)。函数引用可以是内联的匿名函数(如上)。
但也可以是代表函数的变量:
$func = function(){
// Get CSV data to array
return $array;
};
$csvdata = call_user_func($func);
或者,它可以是一个字符串,其中包含函数的名称:
function myFunc(){
// Get CSV data to array
return $array;
};
$csvdata = call_user_func('myFunc');
所有这些都做同样的事情:你的函数被调用。您甚至可以告诉 call_user_func
将哪些参数传递给您的函数:
function myFunc($arg){
echo $arg;
// Get CSV data to array
return $array;
};
$csvdata = call_user_func('myFunc', 'hello');
以上将回显
“你好”。
我提供这些变体仅供引用,因为您对内联函数参数感兴趣。然后你也可以传递参数:
$csvdata = call_user_func(function($arg1, $arg2){
echo $arg1 . "," . $arg2;
// Get CSV data to array
return $array;
}, 'hello', 'there');
关于php - 将函数结果存储到变量以供以后在 PHP 中使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38409661/