为了账号安全,请及时绑定邮箱和手机立即绑定

在php中分配变量值

在php中分配变量值

PHP
慕桂英546537 2022-06-17 14:51:19
我只是对将 php 上的变量值分配给另一个感到困惑,它是如何工作的?!例如: <?PHP    $var1=mysqli_fetch_array($query);    while($var2=$var1)     {       echo $var2[$key];   /** this wont't work Correctly however $var1 it's        value = to mysqli_fetch_array**/     }    while($var1=mysqli_fetch_array($query))     {      echo $var1[$key];   /** this will work , why ! **/     } ?>
查看完整描述

1 回答

?
POPMUISE

TA贡献1765条经验 获得超5个赞

PHP 赋值行为的一个特点是它还返回赋值的结果。这允许以下语句:


$a = $b = $c = 3; // All of a, b and c will equal 3

和:


while ($variable = call_a_function()) {

  do_something_with($variable);

}

在后一个示例中,在循环迭代开始时将其variable分配给输出;call_a_function()一旦call_a_function()返回一个计算结果为 的值,false循环就结束。如果返回的值不计算为false,variable则将包含返回的任何值,直到它再次被覆盖。


您的示例使用类似的行为。之间的关键区别


$var1=mysqli_fetch_array($query);

while($var2=$var1)

{

  echo $var2[$key];

}

和:


while($var1=mysqli_fetch_array($query))

{

  echo $var1[$key];

}

...是在第一个示例中,$var1仅分配给循环开始mysqli_fetch_array($query) 之前的返回值,而在第二个示例中,$var1分配给循环的每次迭代中的mysqli_fetch_array($query)返回值。


最终,使这两段代码产生重大差异的原因在于,mysqli_fetch_array($query)它们会根据情况返回不同的结果。


将代码片段组合成一个按预期工作但使用 $var2 的示例,产生:


while($var2=$var1=mysqli_fetch_array($query))

{

  echo $var2[$key];

}

或者


$var1=mysqli_fetch_array($query); // ask first time

while($var2=$var1)

{

  echo $var2[$key];

  $var1=mysqli_fetch_array($query); // ask again, because the answer changed

}

TL;DR:第一个例子问一个问题一次,第二个例子问一个问题很多次。在这种情况下,代码的预期行为需要多次询问问题,因为答案会随着时间而变化。


查看完整回答
反对 回复 2022-06-17
  • 1 回答
  • 0 关注
  • 79 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信