这可能听起来像一个愚蠢的问题,但确实为函数赋值变量意味着它只调用函数一次,并且可以无限次重复使用而无需对函数进行额外调用,或者它仍然将函数调用为多个次?
就是这样:
$variable = function_name();
echo $variable;
echo $variable;
与此相同:
echo function_name();
echo function_name();
我知道这两种情况最终都会显示相同的信息,但我很好奇这一部分数据是一次获取并重复使用多少,或者是否在每次回显时获取。
那么将一个变量赋值给一个函数mean function_name();
是否只能工作一次,变量只是回收数据以供以后使用,或者function_name();
实际上做了两次这样的工作?
更好的做法是分配变量,还是每次需要使用时直接调用函数?
答案 0 :(得分:2)
函数应该总是返回一些值,例如,如果你有这样的函数。
function foo() {
return 'hello world';
}
如果你调用它并将其分配给变量,那么
/*
* in the below example the function will be called once
* and the function's return value will be assigned to $a variable
* now $a will contain value 'hello world';
*/
$a = foo();
如果您尝试打印变量$a
,它将只打印它包含的值,而不是再次调用该函数,因为$a
现在包含'hello world';
通过多次回显$变量。
echo $a;
echo $a;
echo $a;
只会打印值hello world
三次,而不是三次调用该函数。
但是当您多次调用该函数时,例如。
$a = foo();
$a = foo();
现在回答你的问题。
这将导致函数被多次调用。和 值被覆盖的前一个值覆盖 功能调用。所以将变量赋值给函数均值 函数名();只做一次和变量的工作 回收数据供以后使用或者使用function_name();实际上 工作两次?
我希望我已经详细解释了这一点。
Is it better practice to assign variables or just directly call the function each time it needs to be used?
这取决于上下文和你想要使用的函数,底线是,总是尝试从函数中返回一些值,例如。
a)如果该函数用于获取某些值并对其进行格式化,则应将其作为数组,字符串或任何数据类型返回。
b)如果函数是为了执行某些操作而不是任何提取,那么您可以返回类似return true|false
的布尔值,表明操作成功。
答案 1 :(得分:2)
它只会运行一次
<?php
function test(){
return time();
}
$a = test();
echo $a . "\n";
sleep(1);
echo $a . "\n";
larikov@mb:~# php -f t.php
1343159819
1343159819
答案 2 :(得分:1)
该功能将在您调用时运行多次。在第二个示例中,函数将运行两次,如果函数在两种情况下都返回完全相同的代码,则效率很低。缓存可以帮助一些,但它可能会被抛出缓存,缓存可能已经满了。最好将它放在第一个例子中的变量中,然后根据需要输出它。
答案 3 :(得分:1)
编程语言通常非常直接。您可以命令计算机/处理器执行操作,即使使用PHP等高级语言也是如此。
因此,如果您命令echo "day";
,它将打印出字符串 day - 就像写的一样。如上所述:相当直接。
那么调用函数呢:
printf("%s", 'day');
也打印出字符串 day 。同样将字符串'day'
格式化为printf
的第二个参数。所以调用了这个函数。
更好的做法是分配变量,还是每次需要使用时直接调用函数?
这是一个非常哲学的问题。从技术上讲,两者都可以相同。如果两者都相同,则更多明智调用函数一次,将返回值分配给valvue并存储以供以后使用。
存储到变量的好处是,通常情况下,无论如何都需要这样做(即使没有明确地表示变量,而是存储器),最常见的是作为程序员思考:变量,便宜。接受。使您的软件快速 - 即使您认为:呃,至少这是一个额外的变量,这将减慢速度。事实是:变量通常会加速您的开发。此外,PHP具有写入时的复制功能,这意味着复制数据实际上并非多次发生。