【问题标题】:PHP execution function when assigned to a variable分配给变量时的PHP执行函数
【发布时间】:2014-09-27 04:44:45
【问题描述】:
我有一个在返回数组之前“回声”的函数。当将该函数分配给如下变量时,它会执行输出回显的函数。这是我认为分配给变量的预期行为吗?谢谢
function check($link) {
//.....
echo "some text ";
return $array;
}
$test = check($link);
【问题讨论】:
标签:
php
function
variable-assignment
【解决方案1】:
它逐行执行,所以当它得到echo "some text "; 时它会打印,然后它会返回数组。
【解决方案2】:
是的,这是预期的行为。您正在创建副作用(回声),同时还分配给变量。您正在同时执行所谓的查询和命令,这是完全合法的。
【解决方案3】:
当你将一个函数分配给一个变量时,php实际上正在执行该函数以获取其返回值,然后将该值分配给该变量。
所以 php 执行您的函数(因此执行 echo 语句),然后将返回值($array)分配给 $test。
【解决方案4】:
PHP 解释器会在你的函数中执行任何东西。 echo 函数相当于 Java 中的 System.out.print、C# 中的 Console.WriteLine 和 C++ 中的 cout。这就像将一系列文本写入标准输出。这里唯一的区别是客户端的 Web 浏览器不是控制台,所以提到的字符序列会在 HTTP 响应正文中发送回浏览器。
【解决方案5】:
你是对的。
在 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 美分,干杯。