📄 so.php
字号:
<?php
require("data.php");
$A;$B;$C;$D;//ABCD四个站牌,A为起点,B为终点。均大写
$lineA=array();$lineB=array();$lineC=array();$lineD=array();//四个线路集
$A=$_GET["A"];$B=$_GET["B"];$so=$_GET["so"];
$auto=0;//当$so值不为空时,为手动查询
$stop=0;//出错时,$stop为1,停止执行代码
if(!is_numeric($so)){$so=1;$auto=1;}//当$so值为空时,自动赋值
$i=0;
$max=30;//查询结果最大值
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>公交换乘查询:<?php echo $A;?>-<?php echo $B;?></title>
<link href="images/s.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="areas">
<!--公交查询 -->
<div id="m1">
<div id="m1a"><a href="/zhengzhou/"><img src="images/logo.gif" border="0" alt="郑州公交网" /></a></div>
<div id="m1b"></div>
</div>
<div id="m2"></div>
<?php
echo "<h2>公交换乘方案--[$A]<span class=\"cc\">-</span>[$B]</h2>\n";
echo "<div class=\"result\">\n";
if($A==$B){//当起点和终点相同时出错!!!
echo"<h5>起点和终点不能相同</h5>";
$stop=1;
}
if($so==1 && $stop==0){
foreach($lineMark as $value){
$key1=array_search($A,$$value);
$key2=array_search($B,$$value);
if($key1!==FALSE && $key2!==FALSE){
$key3=(int)$key2-(int)$key1;//强制类型转换
if(preg_match("/s$|x$/",$value) && $key3<0){//判断是否为单行线
continue;
}
$lineA[$value]=abs($key3);
}
}
if(!empty($lineA)){
natcasesort($lineA);//根据乘坐站点最少排序
$cc=count($lineA);//计算$lineA数组的长度,也就是线路的条数
echo "<h4>有<span class=\"cc\">$cc</span>条直达线路供你选择</h4>";
foreach($lineA as $key=>$value){$i++;
echo '<dl>';
echo '<dt>'.$i.'<span class="sc">('.$value.'站)</span></dt>';
echo '<dd>从<span class="stops">('.$A.')</span>乘<a href="lines/'.$key.'.html?stops='.$A.'|'.$B.'" target="_blank" class="lines">'.$mName[$key].'</a>直达<span class="stops">('.$B.')</span></dd>';
echo "</dl>";
}
if($auto==0){
echo"<h5><a href=\"so.php?so=2&A=$A&B=$B\">选择一次换成方案</a></h5>";
$stop=1;
}
}
else{
if($auto==0){
echo"<h5><a href=\"so.php?so=2&A=$A&B=$B\">没有直达车,请查看一次换成方案</a></h5>";
$stop=1;
}
else{
$so=2;
}
}
}
//一次换乘开始
if($so==2 && $stop==0){//一次换乘
foreach($lineMark as $value){
$yesA=in_array($A,$$value);
$yesB=in_array($B,$$value);
if($yesA&&!$yesB){//在A不在B
$lineA[]=$value;
}
if(!$yesA&&$yesB){//在B不在A
$lineB[]=$value;
}
}
foreach($lineA as $value){
foreach($lineB as $value2){
$temp=array_intersect($$value,$$value2);//$temp为站点集
if(!empty($temp)){
$key1=array_search($A,$$value);
$key2=array_search($B,$$value2);
foreach($temp as $value3){
$key3=array_search($value3,$$value);
$key4=(int)$key3-(int)$key1;//强制类型转换
if(preg_match("/s$|x$/",$value) && $key4<0 ){//判断是否为单行线
continue;
}
$key7=array_search($value3,$$value2);
$key5=(int)$key2-(int)$key7;//强制类型转换
if(preg_match("/s$|x$/",$value2) && $key5<0 ){//判断是否为单行线
continue;
}
$key6=abs($key4)+abs($key5);
$lineC[$value."|".$value2]=$key6;
$lineD[$value."|".$value2]=$temp;//线路相交站点集
}
}
}
}
if(!empty($lineC)){
natcasesort($lineC);//根据乘坐站点最少排序
$cc=count($lineC);
echo "<h4>没有直达线路,有<span class=\"cc\">$cc</span>条一次换乘线路供你选择</h4>";
foreach($lineC as $key=>$value){$i++;
$STOPS=implode("|",$lineD[$key]);//$STOPS为相交站点集
$key=explode("|",$key);
echo '<dl>';
echo '<dt>'.$i.'<span class="sc">('.$value.'站)</span></dt>';
echo '<dd>从<span class="stops">('.$A.')</span>乘<a href="lines/'.$key[0].'.html?stops='.$A.'|'.$STOPS.'" target="_blank" class="lines">'.$mName[$key[0]].'</a>到<span class="stops">('.$STOPS.')</span>换乘<a href="lines/'.$key[1].'.html?stops='.$STOPS.'|'.$B.'" target="_blank" class="lines">'.$mName[$key[1]].'</a>到达<span class="stops">('.$B.')</span></dd>';
echo "</dl>";
if($i>=$max){echo "<h4 style=\"text-align:left; color:#FF0000;\">查询结束:系统已经省略多余线路…</h4>"; break;}//当多于$max条线路时,跳出循环
}
}
else{
if($auto==0){
echo"<h5><a href=\"so.php?so=3&A=$A&B=$B\">没有一次换成方案,请查看二次换成方案</a></h5>";
$stop=1;
}
else{
$so=3;
}
}
}
//二次换乘开始
if($so==3 && $stop==0){//二次换乘
echo "<h5>二次换乘正在开发中…</h5>";
}
echo "\n</div>\n";
?>
<div id="m4">
郑州公交路线查询系统 郑州公交路线 ©2006-2008 巴士换乘<span class="f12">(郑州站)</span><br />
Powered by <a href="http://www.hcbus.com" target="_blank">HcBus1.0</a>
</div>
<!--结束 -->
</div>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -