分配给变量时的PHP执行函数
我有一个函数,在返回数组之前“echos”。当将该函数分配给下面这样的变量时,它将执行输出echo的函数。这是我认为赋值给变量的预期行为吗,赋值?谢谢分配给变量时的PHP执行函数,php,function,variable-assignment,Php,Function,Variable Assignment,我有一个函数,在返回数组之前“echos”。当将该函数分配给下面这样的变量时,它将执行输出echo的函数。这是我认为赋值给变量的预期行为吗,赋值?谢谢 function check($link) { //..... echo "some text "; return $array; } $test = check($link); 它逐行执行,所以当它得到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美分,干杯。是的,这是正常的,它会回显并将值赋给变量。所以通过赋值,我也在调用函数?