分配给变量时的PHP执行函数

分配给变量时的PHP执行函数,php,function,variable-assignment,Php,Function,Variable Assignment,我有一个函数,在返回数组之前“echos”。当将该函数分配给下面这样的变量时,它将执行输出echo的函数。这是我认为赋值给变量的预期行为吗,赋值?谢谢 function check($link) { //..... echo "some text "; return $array; } $test = check($link); 它逐行执行,所以当它得到echo“一些文本”时它打印,然后返回数组。是的,这是预期行为。您正在创建一个副作用(回音),同时也为变量赋值。您同时执行的是

我有一个函数,在返回数组之前“echos”。当将该函数分配给下面这样的变量时,它将执行输出echo的函数。这是我认为赋值给变量的预期行为吗,赋值?谢谢

 function check($link) {
 //.....
  echo "some text ";
 return $array;

}

 $test = check($link);

它逐行执行,所以当它得到
echo“一些文本”时它打印,然后返回数组。

是的,这是预期行为。您正在创建一个副作用(回音),同时也为变量赋值。您同时执行的是一个查询和一个命令,这是完全合法的。

当您将一个函数分配给这样的变量时,php实际做的是执行该函数以获取其返回值,然后将该值分配给该变量


因此php执行您的函数(因此执行echo语句),然后将返回值($array)分配给$test。

php解释器将执行函数中的任何内容。在C++中,代码< >代码< >代码>函数相当于爪哇中的代码< >代码> >打印> <代码>。这就像将一系列文本写入标准输出。这里唯一的区别是,您使用的不是控制台,而是客户端的Web浏览器,因此所提到的字符序列被发送回HTTP响应正文中的浏览器。

您是对的

在PHP中,尽管看起来很奇怪,它确实做到了这一点

但是,作为一种编程设计,强烈建议将显示与编程逻辑分开:

/* array */ function check($link) {
  /* array */ $Result = array();

  //...

  $Result[] = "Sun";

  //...

  $Result[] = "Mercury";
  $Result[] = "Venus";
  $Result[] = "Earth";

  //...

  return $Result;
}

/* array */ $test = check($link);
但是,有时,直接打印到浏览器控制台可能有助于调试:

/* array */ function check($link) {
  /* array */ $Result = array();

  //...

  // uncomment, just in severe cases
  //echo("link: [" . $link . "]");

  //...

  $Result[] = "Sun";

  //...

  $Result[] = "Mercury";
  $Result[] = "Venus";
  $Result[] = "Earth";

  //...

  return $Result;
}

/* array */ $test = check($link);

只有我的2美分,干杯。

是的,这是正常的,它会回显并将值赋给变量。所以通过赋值,我也在调用函数?