变量/函数和PHP逻辑

时间:2012-07-24 19:46:43

标签: php

这可能听起来像一个愚蠢的问题,但确实为函数赋值变量意味着它只调用函数一次,并且可以无限次重复使用而无需对函数进行额外调用,或者它仍然将函数调用为多个次?

就是这样:

$variable = function_name();
echo $variable;
echo $variable;

与此相同:

echo function_name();
echo function_name();

我知道这两种情况最终都会显示相同的信息,但我很好奇这一部分数据是一次获取并重复使用多少,或者是否在每次回显时获取。

那么将一个变量赋值给一个函数mean function_name();是否只能工作一次,变量只是回收数据以供以后使用,或者function_name();实际上做了两次这样的工作?

更好的做法是分配变量,还是每次需要使用时直接调用函数?

4 个答案:

答案 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具有写入时的复制功能,这意味着复制数据实际上并非多次发生。