Загрузите файл в массив и проверьте его с помощью in_array - PullRequest
3 голосов
/ 27 августа 2010

Я хочу проверить, существует ли значение в массиве из текстового файла.Вот что у меня получилось:

<?php
$array = file($_SERVER['DOCUMENT_ROOT'].'/textfile.txt');
if(in_array('value',$array)){
   echo 'value exists';
}
?>

Я тоже немного поэкспериментировал с циклами foreach, но не смог найти способ сделать то, что я хочу. Значения втекстовые документы разделены новыми строками.

Ответы [ 4 ]

4 голосов
/ 27 августа 2010

Это происходит потому, что строки файла, которые становятся значениями массива, имеют завершающий символ новой строки. Вам нужно использовать FILE_IGNORE_NEW_LINES параметр file , чтобы ваш код работал как:

$array = file($_SERVER['DOCUMENT_ROOT'].'/textfile.txt',FILE_IGNORE_NEW_LINES);

EDIT:

Вы можете использовать var_dump($array) и увидеть, что строки имеют новую строку в конце.

0 голосов
/ 27 августа 2010

Вам нужно использовать массив?Вы можете просто использовать сравнение строк.

<?php
$string = file_get_contents('textfile.txt');
if(strpos($string, 'value')){
    echo 'value exists';
}else{
    echo 'value doesn\'t exist';
}
?>
0 голосов
/ 27 августа 2010
$filename   = $_SERVER['DOCUMENT_ROOT'].'/textfile.txt';
$handle     = fopen($filename, 'r');
$data       = fread($handle, filesize($filename));
$rowsArr    = explode('\n', $data);
foreach ($rowsArr as $row) {
    if ($row == 'value') {
        echo 'value exists';
    }
}
0 голосов
/ 27 августа 2010

Это должно работать так.Однако метод file() не удаляет символы новой строки из файла.

$array = file($_SERVER['DOCUMENT_ROOT'].'/textfile.txt', FILE_IGNORE_NEWLINES);

Нужно сделать свое дело.Проверьте руководство для файла ().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...