Как проверить, есть ли какой-либо элемент массива в строке? - PullRequest
0 голосов
/ 16 января 2012

Я пытаюсь создать функцию, которая просматривает вводимые пользователем данные, чтобы узнать, ввели ли они название дня.По какой-то причине эта функция возвращает 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>

Ответы [ 4 ]

2 голосов
/ 16 января 2012

=== не == см. stripos ручной ввод

1 голос
/ 16 января 2012

Вы должны использовать

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";
    }
}
0 голосов
/ 16 января 2012

Нет необходимости использовать 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
}
0 голосов
/ 16 января 2012

Попробуйте это:

if (isset($_POST['query']) {
   $dow = array('monday','tuesday','wednesday','thursday','friday','saturday','sunday');    
   if (in_array(trim(strtolower($_POST['query'])), $dow) echo"hurray";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...