当前位置:编程学习 > php >>

PHP程序输出不合理

 function score($php,$java,$net){
  function php($php){
   if($php>60){
    echo "及格";
   }else{
    echo "不及格";
   }
  }
  function java($java){
   if($java>60){
    echo "及格";
   }else{
    echo "不及格";
   }
  }
  function net($net){
   if($net>60){
    echo "及格";
   }else{
    echo "不及格";
   }
  }
  $total=$php+$java+$net;
  $avg=$total/3;
  echo "php的成绩为".$php."分,".php($php)."</br>";
  echo "java的成绩为".$java."分,".java($java)."</br>";
  echo "net的成绩为".$net."分,".net($net)."</br>";
  echo "总成绩为:".$total."<br>";
  echo "平均成绩为:".$avg."<br>";
}
score(50,70,90); 上面这段PHP代码是我练习内部函数写的,在我的浏览器输出如下!

我不明白为什么合格和不合格显示在前面,我明明是写在成绩后面的!我有两个浏览器,IE和360极速都这样显示,我想问问这是为什么?

答案:以这句为例吧,echo "php的成绩为".$php."分,".php($php)."</br>"; 
php解析器会先计算各个部分的值,然后再执行字符串拼接的操作,最后输出。
因为在执行php($php)时,这个函数里边有输出就先输出了,所以出现了你描述的情况。
如果想在后边输出,要给函数返回值,自己再试试吧。
希望这样的解释能让你明白。
其他:因为函数会先被执行,就像变量会先被值取代再输出一样 

上一个:php程序员,有点点沮丧
下一个:麻烦PHP高手帮忙分析下,下面的程序我理解的对不对?求教了,感激不尽!

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,