【发布时间】:2016-07-07 03:27:35
【问题描述】:
我正在制作一个网站,我们需要做的一件事是吸引用户的兴趣,向他们展示最好的内容。用户的兴趣存储在“兴趣”字段中的“用户”表中。
现在,文章被标记了不同的兴趣,并且显示了与用户兴趣相匹配的文章。文章保存在标记表中。所以我们得到所有文章的标签,然后选择用户的兴趣。如果在文章中找到兴趣,则代码回显 true,否则回显 false。
$select = "SELECT * from users where username='$username'";
$query = mysqli_query($dbc, $select) or die(mysqli_error($dbc));
while ($result = mysqli_fetch_array($query)) {
$interests = explode(",",$result['interests'],40);
foreach($interests as $interest) {
$select1 = "SELECT * from tagged";
$query1 = mysqli_query($dbc, $select1) or die(mysqli_error($dbc));
while ($result1 = mysqli_fetch_array($query1)) {
echo "Interests:".$interest."<br>";
echo "Tags:".$result1['tags']."<br>";
$pos = strpos($result1['tags'], $interest);
if ($pos===true) {
echo "Result:true<br>";
} else {
echo "Result:false<br>";
}
}
}
}
兴趣列表实际上是用逗号分隔的,所以我将其提取并分解为一个数组,然后使用strpos() 函数查找该数组元素在文章标签中的位置。但是所有结果都显示true,即使它们是false。
The result 看起来像这样。
【问题讨论】:
-
strpos()是否返回true?仔细阅读手册。 -
它不返回true。但它确实返回false..Nd如果我反转它..我会得到true.不是那样的吗?
-
Strpos 返回字符串匹配的从通常为 0 的起始位置开始的字符数。使用 $pos!==false 等价于 $pos not 0... 表示未找到。