日期:2014-05-17  浏览次数:20447 次

一段PHP不能输出汉字的代码,求各位解决
<?php  
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); 
header("Cache-Control: no-cache, must-revalidate"); 
header("Pragma: no-cache"); 
include("connect.php");
ini_set("date.timezone","Asia/Shanghai");
$d1=date("Y-m-d");
$query=mysql_query("select*from item where status<>'完成' order by date desc ");
while($now=mysql_fetch_array($query)){
$user= "<users>";  
$user.=" <serial>";  
$user.=$now['serial'];
$user.= "</serial>";
$user.=" <name>";  
$user.=$now['name'];
$user.= "</name>";
$user.=" <dep>";  
$user.=$now['dep'];
$user.= "</dep>";
$user.="<comtime>";  
$usera=round((-strtotime($d1)+strtotime($now['completetime']))/3600/24);
if($usera<0){
$us="超期:"+abs($usera);
}
if(($usera>=0)&&($usera<=3)){
$us="即将到期:"+abs($usera);
}
if($usera>3){
$us="还有:"+abs($usera);
}
$user.="超期"+ $us;
$user.= "</comtime>";
$user.="<status>";  
$user.=$now['status'];
$user.= "</status>";
$user.="<percent>";  
$user.=$now['percent'];
$user.= "</percent>";
$user.="<creator>";  
$user.=$now['creator'];
$user.= "</creator>";
$user.="<date>";  
$user.=$now['date'];
$user.= "</date>";
$user.= "</users>";  
echo $user;
}
?>


if($usera<0){
$us="超期:"+abs($usera);
}
if(($usera>=0)&&($usera<=3)){
$us="即将到期:"+abs($usera);
}
if($usera>3){
$us="还有:"+abs($usera);
}
$user.="超期"+ $us;
这段代码为什么只能输出$us的数字 而前面的汉字:超期 即将到期等不能输出?

------解决方案--------------------
这不是 js ,字符串的连接应该使用. 而不是+ 
将里里面错误的地方都修改好,类似如下:

$us="即将到期:"+abs($usera);

修改成

$us="即将到期:".abs($usera);


------解决方案--------------------
这和类型转换有关。+运算符是算数的事,结果会被强制类型转换为浮点数或整数,前面的字符串自然也就不会存在。php.net手册上有讲类型转换
正确的应该使用 "超期:". abs($usera);