в PHP, используя «если заявление», чтобы найти слово - PullRequest
1 голос
/ 14 мая 2011

У меня есть текстовый файл с несколькими строками текста, например:

JOHN
MIKE
BEN
JAMES
PETE

Я прочитал это содержимое в массив, где каждая строка текста помещена в отдельный элемент массива.

Затем я проверил каждый элемент массива, чтобы найти фразу, скажем «BEN»

есть:

for( $a = 0; $a < 5; $a++ )
{
if ($contents[$a] == "BEN") 
{
echo "$contents[$a]";
}
}

но это не может распознать 'BEN'

но если бы я искал число вместо слова, из:

JOHN
MIKE
10
JAMES
PETE

или из ...

5
10
15
20
25

и использовал тот же код для поиска номера, например: скажем '10'

if ($contents[$a] == 10)
    {
    echo "$contents[$a]";
    }

тогда это работает нормально, так почему?

Также ...

Я не понимаю проблемы, если отдельные строки текста уже находятся в массиве, только когда они ЧИТАЮТСЯ из текстового файла ...

$contents[0] = "JOHN";
$contents[1] = "MIKE";
$contents[2] = "BEN";
$contents[3] = "JAME";
$contents[4] = "PETE";

Ответы [ 4 ]

4 голосов
/ 14 мая 2011

Я предполагаю, что строки, которые вы читаете из текстового файла, содержат завершающий символ конца строки для каждой строки, поэтому вы не можете найти BEN (поскольку эта строка не включает в себя завершающий символ конца строки).Используйте функцию trim, чтобы избавиться от конечных пробелов в строках, прежде чем сравнивать их со строками.

0 голосов
/ 14 мая 2011

Вам также следует проверить strcmp() для сравнения строк в PHP.

0 голосов
/ 14 мая 2011

Возможно, потому что, когда вы читаете строку из файла, у вас также есть символ новой строки (\n) в конце строки.Используйте rtrim(), чтобы удалить его.

0 голосов
/ 14 мая 2011

Попробуйте использовать array_search ()

if ($index = array_search('BEN', $contents) {
    echo $contents[$index];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...