【问题标题】:Load file into array and check it with in_array将文件加载到数组中并使用 in_array 检查它
【发布时间】:2010-08-27 09:51:27
【问题描述】:

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

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

我也对 foreach-loops 进行了一些试验,但找不到一种方法来做我想做的事。文本文档中的值用换行符分隔。

【问题讨论】:

    标签: php file


    【解决方案1】:

    发生这种情况是因为文件中成为数组值的行有一个尾随换行符。您需要使用fileFILE_IGNORE_NEW_LINES 选项来使您的代码工作为:

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

    编辑:

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

    【讨论】:

    • 哦,这解释了很多!谢谢!
    【解决方案2】:

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

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

    应该做的伎俩。检查manual for file()。

    【讨论】:

      【解决方案3】:
      $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';
          }
      }
      

      【讨论】:

        【解决方案4】:

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

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

        【讨论】:

        • 是的,有点。我想要“准确的值”,所以数组可能是最好的。
        • 那么 codaddict 的回答最适合您。 ;D
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-08-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-03-25
        • 1970-01-01
        相关资源
        最近更新 更多