2017-10-04 85 views
0

我被一个学生问过这个简单的问题,我很困扰,因为我无法提供足够的答案。我所理解的是,一个变量只是一个拥有价值的容器。除此之外,我无法为他们提供合理的解释。是否有必要为变量赋值?

示例:

我想检查一个年龄是否微小。通过使用一个变量,我会这样说:

<?php 
$age = 30; 
if($age > 18) 
    echo 'You are no longer a minor'; 
?> 

但是,没有使用一个变量,我可以这样说:

<?php 
if(30 > 18) 
    echo 'You are no longer a minor'; 
?> 

如果两个脚本产生相同的输出,那么,我们为什么要把它放在一个变量中,实际上,我们可以减少我们不使用变量的代码。而且,是否有必要为变量赋值?

它会影响计算机的内存吗?

+5

变量的要点是它们保持*改变*值。如果'$ age'的值是一个常量,那么当检查总是正确时,检查'$ age> 18'的点是什么? – JJJ

+1

JJJ究竟说了什么,使用常量可以缩短代码的长度,因为不需要检查。你已经知道30是小于18,所以你可以简单地运行你的回声。对你的答案的逻辑解释很简单,你不能假设年龄总是30,它的价值是可变的,因此存储在一个,代码片段没有帮助,但最终年龄将从用户帐户等拉等而不仅仅是设置。 – JParkinson1991

+0

@samuel参见https://stackoverflow.com/questions/14520237/does-declaring-an-unnecessary-variable-in-php-consumes-memory – Ivar

回答

1

这里的答案是,任何有效用法的年龄将来自某种形式的输入(用户输入,数据库选择,webservice调用等),这些输入将存储在变量中以便继续其余的逻辑。你的例子这里试图通过变量设置为预定值,这是例子都冷静和花花公子伪造的投入,但在正常情况下,你会读这个值从什么地方,因此变量

1

变量是占位符算法中。以“解决X”的刻板数学案例。这里X是一个算法的一部分,但你不知道X和/或算法变化的结果的精确值,当你代替X.不同的值,这同样适用于编程:

if (30 > 18) 

好,好吧,这个代码肯定是东西,但它所做的是预先确定的。 30将始终大于18,那么撰写此声明有什么意义?你可以放弃它。

if ($age > 18) 

现在,这引入了一个变量其值在其他地方决定的,这种算法会产生视$age的具体价值,你运行一个不同的结果。如果你只是对$age的值进行硬编码,那也不是很有趣,但是假设在现实世界中,$age的值将在运行时由外部因素决定。

2

确实,一个变量是一个容纳一个值的容器,但是当变量持有的值在你的代码的不同执行之间变化时,它的能力就来了。

在由OP提供的示例中,$ age被硬编码为30,因此将其存储在变量中以供以后比较没有任何好处。

但是,这个稍有人为的例子在现实生活中不太可能找到。相反,页面可能会提示用户年龄,然后将响应分配给变量$ age。

为每个最终用户执行相同的代码,并根据他们的响应,页面会响应他们不再是未成年人,否则它将保持沉默。

例如:

#!/usr/bin/env php 
<?php 
$age = (int)readline("How old are you?"); // Prompt for a string and convert it to an integer 
if($age > 18) 
    echo 'You are no longer a minor'; 
?> 

因此它响应:

$ ./askage.php 
How old are you?30 
You are no longer a minor 
$ ./askage.php 
How old are you?12 
$ 
0

在应用程序中使用任何变量完全取决于你的算法的性质,如果您收到您的应用程序输入在本质上是动态的,那么它更好地使用变量,但如果输入静态&将保持每次迭代相同,那么你可以直接将它分配给你的逻辑。

贝娄是您需要变量的场景,您不需要变量的地方,我有许多场景供我们在日常生活中使用。

我们需要变量的地方。

  • 将输入数据与任何相关数据或以前的输入进行比较。
  • 输入数据的结果计算。
  • 修改任何业务案例的输入数据。

我们不需要变量。

  • 比较任何静态数据,它在程序中预先声明。
  • 启动任何具有确定值的逻辑。
  • 需要的有限或特定数量的迭代。

这在大多数语言/脚本中很常见,希望这有助于理解变量的用例。