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后面也该再跟一段的啊(返回函数输入内容.)请高人指点
展开
 我来答
邬樱00i
2010-04-15 · TA获得超过722个赞
知道小有建树答主
回答量:714
采纳率:0%
帮助的人:700万
展开全部
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 的是个空值)
来吧_角儿
2010-04-15 · TA获得超过693个赞
知道小有建树答主
回答量:553
采纳率:0%
帮助的人:315万
展开全部
想的没错,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!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式