php - 将函数结果存储到变量以供以后在 PHP 中使用?

标签 php arrays variables

考虑到我使用 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/

相关文章:

php - 我在更新表格中的产品数量时遇到问题

php - phpMyAdmin 中的编码问题。特别是包含俄语文本的记录

php - 获取数组元素 MySQLi + PHP

c - C 中整数数组中字符串的 ASCII 值的存储

具有性能的 Javascript 对象重组

javascript - JQuery Datepicker - 将选定的日期发送到新页面,将其用作 php 变量

php - 在 php 和 mysql 中比较 DATETIME 与 time()

javascript - 如何使用 div 元素的名称分配变量

c - 为什么 x[2] 也重新分配 y 值?我该如何解决这个问题

swift - 如何在 View Controller 之间传递变量而不需要快速的segue