PHP调用函数运行顺序问题
我的代码是这样子的.<?classcheck{private$depth;private$pump1;private$pump2;publicfunctiondepth(...
我的代码是这样子的.
<?
class check {
private $depth;
private $pump1;
private $pump2;
public function depth($depth) {
if(is_numeric($depth)) {
$this->depth = $depth;
}else{
echo "<br><font color=red>ERROR! $depth is not a numerial!</font>";
}
return $this->depth;
}
}
$depth = "trtr"; //赋值
$check = new check();
echo $depth.$check->depth($depth);
?>
但输出结果是:
ERROR! trtr is not a numerial!trtr
他顺序为什么是这样子呢,如果先执行完函数,再到echo ,那trtr后面也该再跟一段的啊(返回函数输入内容.)请高人指点 展开
<?
class check {
private $depth;
private $pump1;
private $pump2;
public function depth($depth) {
if(is_numeric($depth)) {
$this->depth = $depth;
}else{
echo "<br><font color=red>ERROR! $depth is not a numerial!</font>";
}
return $this->depth;
}
}
$depth = "trtr"; //赋值
$check = new check();
echo $depth.$check->depth($depth);
?>
但输出结果是:
ERROR! trtr is not a numerial!trtr
他顺序为什么是这样子呢,如果先执行完函数,再到echo ,那trtr后面也该再跟一段的啊(返回函数输入内容.)请高人指点 展开
2个回答
展开全部
echo $depth.$check->depth($depth);
这句话,第一步是对 $depth 和 $check->depth($depth) 分别进行解析
顺序是没错的,先解析 $depth 为 trtr
但是在解析$check->depth($depth) 的时候,就执行了输出echo "<br><font color=red>ERROR! $depth is not a numerial!</font>";
功能。
等解析彻底完成,再输出的话,只有 $depth有字符,而$check->depth($depth)并未返回任何可供输出的字符串( $this->depth = $depth;并未执行,所以return 的是个空值)
这句话,第一步是对 $depth 和 $check->depth($depth) 分别进行解析
顺序是没错的,先解析 $depth 为 trtr
但是在解析$check->depth($depth) 的时候,就执行了输出echo "<br><font color=red>ERROR! $depth is not a numerial!</font>";
功能。
等解析彻底完成,再输出的话,只有 $depth有字符,而$check->depth($depth)并未返回任何可供输出的字符串( $this->depth = $depth;并未执行,所以return 的是个空值)
展开全部
想的没错,echo 不是真正的函数(它是一个语言结构),他解析的时你先执行
的部分,所以输出ERROR! trtr is not a numerial!trtr;
# return $this->depth;改为 return $depth
输出:ERROR! trtr is not a numerial!trtr trtr
#echo $depth; echo $check->depth($depth);(没变动retrun)
输出:trtr ERROR! trtr is not a numerial!
的部分,所以输出ERROR! trtr is not a numerial!trtr;
# return $this->depth;改为 return $depth
输出:ERROR! trtr is not a numerial!trtr trtr
#echo $depth; echo $check->depth($depth);(没变动retrun)
输出:trtr ERROR! trtr is not a numerial!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询