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

时间:2016-07-16 09:25:35

标签: php arrays variables

考虑到我一直在使用PHP的时间,我对此问题感到羞耻,但看起来我现在太累了,不能自己解决这个问题。

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

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

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

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

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

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

抱歉伙伴

2 个答案:

答案 0 :(得分:2)

您可以使用call_user_func动态调用新创建的函数:

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

然后只引用$csvdata作为变量(不带括号)。

解释

文档将call_user_func的参数调用回调,就是这样:你传递一个函数引用,它是call_user_func的实现为你调用你的函数( "给你回电话#34;)。函数引用可以是内联的匿名函数(如上所述)。

但它也可以是表示函数的变量:

$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');

答案 1 :(得分:1)

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

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

    $csvdata=csv();