繁体   English   中英

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

[英]Store function result to variable for later use in PHP?

考虑到我一直在使用PHP的时间,我觉得这个问题感到很遗憾,但是现在看来我已经太累了,不能自己解决它。

我有一个php变量函数,它获取一个CSV文件并将数据存储到一个数组中。

$csvdata = function(){
    // Get CSV data to array
    return $array;
}

该数组在不同情况下由其他函数使用。

问题是我虽然这个函数只运行一次,但我注意到它每次使用var $ csvdata时都会运行。

我想要的是创建一个只运行一次的自我唤起函数并将数据存储到一个我可以根据需要多次使用的数组中,而不需要PHP重新执行获取csv的过程并在每次使用$时存储数据csvdata。

它真的很奇怪,因为我觉得如果我的大脑在玩我的笑话......(脑子:“很明显......我知道答案,但我不会告诉你”)

对不起好友

您可以使用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');

以上将echo '你好'。

我提供这些变体仅供参考,因为您对内联函数参数感兴趣。 然后你可以传递参数:

$csvdata = call_user_func(function($arg1, $arg2){
    echo $arg1 . "," . $arg2;
    // Get CSV data to array
    return $array;
}, 'hello', 'there');

你可以给这个函数命名,并像这样打个电话

  function csv(){
        // Get CSV data to array
        return $array;
    }

    $csvdata=csv();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM