将文件加载到数组中并使用in_array进行检查

时间:2010-08-27 09:51:27

标签: php file

我想检查一个由文本文件构成的数组中是否存在值。这是我到目前为止所得到的:

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

我也尝试了一些foreach-loops,但找不到办法做我想要的事情。文本文档中的值用新行分隔。

4 个答案:

答案 0 :(得分:4)

这是因为成为数组值的文件行具有尾随换行符。您需要使用fileFILE_IGNORE_NEW_LINES选项将代码视为:

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

修改

您可以使用var_dump($array)并查看行末尾有换行符。

答案 1 :(得分:0)

它应该像这样工作。但是,file()方法不会从文件中删除换行符。

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

应该做的伎俩。检查manual以查找文件()。

答案 2 :(得分:0)

$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';
    }
}

答案 3 :(得分:0)

你需要使用数组吗?你可以使用字符串比较。

<?php
$string = file_get_contents('textfile.txt');
if(strpos($string, 'value')){
    echo 'value exists';
}else{
    echo 'value doesn\'t exist';
}
?>