如何存储函数返回值而不是函数本身?

时间:2013-12-10 03:19:46

标签: php function scope return

想象一下这个示例代码:

$the_url = the_variable(); // this function returns "www.site.com/post123" here

$items = generate_array();

foreach($items as $item) {
   echo $the_url; // this function returns "www.site.com" here
}

现在,是否可以将the_variable()的返回值存储为$ the_url?因为它看起来像存储函数本身并为每个foreach迭代运行它。所以基本上我希望foreach循环每次都返回www.site.com/post123

我知道这是基本而简单的,虽然我找不到解决方案。

1 个答案:

答案 0 :(得分:2)

我认为你错了。当你这样做时:

$var_name = function_name();

... $var_name设置为function_name()返回 - 它不是对该函数的引用。

考虑这个例子;如果它是一个参考,你会在每个结果中看到不同的数字:

function the_variable() {
    return 'http://www.test.com/' . rand(0, 100);
}

$the_url = the_variable();
$items = range(1, 20);

foreach($items as $item) {
   echo $the_url . PHP_EOL; 
}

但是,as you can see,它返回第一个随机数,并且该返回值存储在$the_url中,直到可以重新定义或取消设置为止。

与此示例相反:

foreach($items as $item) {
    echo the_variable() . PHP_EOL;
}

Which does output a random number on the end each time.