我正在搜索搜索页面,其中一个结果信息就是位置。要搜索的内容之一是音乐专辑(没有位置信息)。
http://www.flcbranson.org/freedownloads-search.php
如果你搜索“摇滚”,你会看到神的和平--Pt。 3 - 我的摇滚与位置信息(这不是它应该的方式)。如果你搜索“我的摇滚”,你会注意到没有列出同一记录的位置信息(它应该是这样的)。这就像if语句被覆盖,如果另一个结果确实有位置信息。
音乐专辑中有$row["Number"]
的Music01,Music02等......所有其他记录都应为空或数字(应该都小于Musicxx。据我所知,这段代码应该是如果它不是音乐专辑,则仅显示位置信息。
<?php
foreach ($stmt as $row) {
if ($row["Number"] < "Music01") {
if ($row["Location"]) $location = $row["Location"];
else $location = "Faith Life Church";
if ($row["City"]) $city = $row["City"];
else if ($row["Sarasota"]) $city = "Sarasota";
else $city = "Branson";
if ($row["State"]) $state = $row["State"];
else if ($row["Sarasota"]) $state = "FL";
else $state = "MO";
}
if ($location) {
?>
<li><?php echo $location; ?></li>
<?php
}
}
?>
我错过了什么,这里?
JJ
答案 0 :(得分:2)
当您以这种方式比较字符串时,您实际上是在说任何不等于Music01
的字符串。它会变得复杂。见http://php.net/manual/en/language.operators.comparison.php
获取一个真正的整数,然后进行比较以获得更可预测的结果。
答案 1 :(得分:1)
你做错了。首先初始化变量,然后根据需要覆盖它们。这将防止您可能丢失案例并且未定义变量的任何奇怪现象。
$location = "Faith Life Church";
$city = "Sarasota";
/*...*/
foreach ($stmt as $row) {
foreach ($row as $variable => $value) {
$variable = strtolower($variable); //Location => location
$$variable = $value; //$location = $value
}
}
除此之外,您要将数字与字符串进行比较。从字符串中删除数字,然后进行比较。
答案 2 :(得分:0)
问题在于您将字符串与小于<
的字符串进行比较,每次都会返回true
。你只需要在数组键中检查“音乐”这个词吗?
if (strpos($row["Number"], 'Music') !== false) {
}