我有一个名为的表getinvolved
,在这个表中显然有各种字段和值。其中之一是命名The Route
并包含用逗号分隔的文本。为此,我们会说它们是Spot 1, Spot 2, Spot
。是的,空间很重要。
现在,在我的代码中,我首先根据逗号将此值分解为一个数组:$route = explode(",", $row['Content']);
Content 是包含Spot 1, Spot 2, Spot
文本值的行的名称。这一切都很好,我已经回应了这个,它看起来很完美。
接下来是棘手的一点,我有多个其他条目不是被标记The Route
而是被标记的Route
。这是每个可能地点的条目,而当前路线Spot 1, Spot 2, Spot
总是可以更改为Spot 2, Spot 1, Tops
。
每个可能的条目都有它自己的行:Name, Type, Content
. Type
是Route
设置的位置,Name
是地点的名称,并Content
包含用于在 Google 地图街景视图中显示地点的 Google 地图 URL。
我正在尝试做的是获取我$route[]
当前包含的数组Spot 1, Spot 2, Spot
并将这些值与所有其他值进行检查。我创建了一个单独的数组$echoroute[]
,其中包含包含所有信息的实际路线。
我的代码如下:
$sql = mysqli_query($link, "SELECT * FROM getinvolved WHERE Type='Route'");
$echoroute = array_fill(0,count($route),""); #Gives $echoroute[] 3 empty elements as $route will always contain 3 elements at the moment.
$i = 0;
$max = count($route);
if($sql)
{
foreach($route as $ii)
{
while($row = mysqli_fetch_assoc($sql))
{
if($row['Name'] == $ii)
{
$echoroute[$i] = "<a href='" . $row['Content'] . "' target='_blank'>" . $row['Name'] . "</a> --> ";
echo $i . " / " . $max . "<br />";
$i+=1;
if($i==($max)) {break 2;} else {break 1;}
}
}
}
}
我不知道为什么,但目前在运行此代码期间,所有发生的事情都是它将通过if
as $sql
pass,进入第一个和第二个while
循环,然后到达该if($row['Name'] == $route[$i])
部分。if
在它实际进入语句之前,它似乎工作正常( in 的值$row['Name']
等于in 的值$route[$i]
)。
$total
在我要求它回应它的地方增加,但只有一次。代码结束并显示以下内容:
0 / 3
3
1
代表变量,根据$total
,应该经过 3 次while($total<$max)
。- 这
/
是我添加一个分隔符以便于阅读。 - 是变量,或者
3
是数组中包含的点的总数。$max
count($route)
$route
- 最后,尾随
3
是让我知道该数组中有 3 个元素的count()
功能。$echoroute
最终,我的问题是,为什么$total
永远不会达到 2 并按照我的要求完成循环?
这花了一些时间来写,所以我希望你明白我已经对此进行了一些思考,我前一段时间写了这个,它需要一些更新,这就是我目前所处的位置。
编辑:
现在已经缩小了范围!使用几个 echo 函数,似乎最后一次运行开始了,但只进行到 while 语句。它从未真正进入 while 语句。目前我有两个结果,最后一个结果恰好在表格的底部。它是在 while($row = 语句自动结束之前使用的最后一个。我是在捕获 while 语句还是需要释放它或其他什么?我真的很困惑,离最后一块很近!