猿问

echo出来的varchar为什么会直接把0开头的数当成8进制转成新的10进制数呢?

<?php 
						error_reporting(E_ALL^E_DEPRECATED);
						$con = mysql_connect("localhost","root","");
						if (!$con)
						{
							die('Accident: 服务器连接失败,请联系管理员');
						}
						else
						{
							mysql_query("set character set 'utf8'");
							mysql_query("set names 'utf8'");
							mysql_select_db("itrip",$con);
							$result=mysql_query("SELECT * FROM spot");
							while($row=mysql_fetch_array($result))
							{
								echo "var point = new BMap.Point(".$row['spotLon'].",".$row['spotLat'].");";
								echo "var bizstart=".$row['bizTimeFrom'].";alert(bizstart);";
								echo "var bizend=".$row['bizTimeTo'].";alert(".$row['bizTimeTo'].");";
								echo "if(bizstart!=bizend){ 
									var now=new Date();
									var hour=now.getHours();
									if((0<=hour&&hour<bizstart)||hour>bizend){
										spotState=0;
									}
									else spotState=1;
								}
								else spotState=1;";
								echo "addMarker(point,spotState);";
							}
						}
						mysql_close($con);
						?>

以上只是截取JS代码中的php部分。

我的两个点都有属性bizTimeFrom和bizTimeTo

  1. 0600 1800

  2. 0600 2000

执行之后的结果是 384 1800和384 2000

而当我不使用任何别的语言,只是新建了一个php,

echo $row['bizTimeFrom']."  ".$row['bizTimeTo'];
		echo "<br>";

这样的结果又是 0600 1800和0600 2000了

所以 求助怎么让显示结果是0600

__Flawless
浏览 1917回答 1
1回答

qq_青枣工作室_0

JS里,八进制就是用0开头表示啊。你可以在PHP里把左边的0删掉: echo "var bizstart=".ltrim($row['bizTimeFrom'], '0').";alert(bizstart);";或者,在JS里用字符串来表示'0600',再转为数字:echo "var bizstart=parseInt('".$row['bizTimeFrom']."');alert(bizstart);";
随时随地看视频慕课网APP
我要回答