[英]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.