我正在尝试创建一个函数,该函数搜索用户输入,看看他们是否有输入一天的名称。出于某种原因,只有在输入了任何两天的名称时,此函数才会返回true。这可能很简单,但我似乎想不通。
这是我的代码:
<?php
if(isset($_POST['query']))
{
$query=$_POST['query'];
$dow=array('monday','tuesday','wednesday','thursday',
'friday','saturday','sunday');
foreach($dow as $day)
{
if(stripos($query, $day)==FALSE)
{
}
else
{
echo"hurray";
}
}
}
?>
<html>
<form action="datefunctiontester.php" method="post">
<p>Search</p><input type="text" name="query">
<input type="submit">
</form>
</html>
===not==请参阅stripos手动输入
您应该使用
if (stripos($query, $day) === FALSE){
而不是
if (stripos($query, $day)==FALSE){
这是因为,如果在查询的开头找到名称,它将返回"0",因为第一个字符的位置将为0,这是错误的。要检查它是否存在,请使用===
,它检查类型而不是值。
此外,您可以使用in_array函数来代替for循环。
if (isset($_POST['query']))
{
$query = $_POST['query'];
$dow = array('monday','tuesday','wednesday','thursday','friday','saturday','sunday');
if (in_array($query, $dow)
{
echo"hurray";
}
}
试试这个:
if (isset($_POST['query']) {
$dow = array('monday','tuesday','wednesday','thursday','friday','saturday','sunday');
if (in_array(trim(strtolower($_POST['query'])), $dow) echo"hurray";
}
在这种情况下不需要使用stripos()
。
// Force lower case for comparisons
$query = strtolower( $_POST['query'] );
$dow = array('monday','tuesday','wednesday','thursday',
'friday','saturday','sunday');
$found = in_array($query, $dow, true);
if($found)
{
// do something
}