PHP array_search无效

时间:2010-11-29 19:17:44

标签: php arrays search

嘿,伙计们,我很难过。试图让array_search与这个脚本一起使用。

 <?php 

$dir = '/var/www/html/pay.group.com/upload';
$i = 0;


if (is_dir($dir)) {
    if ($dh = opendir($dir)) {
        while (($file = readdir($dh)) !== false) {

            if ($file != "." && $file != ".."){
            //convert files from pdf to text
            exec("pdftotext /var/www/html/pay.group.com/upload/" . $file . " /var/www/html/tmp/converted/" . $file);
            //create array from text files
            $current_array = file("/var/www/html/tmp/converted/" . $file) or die ("<br/>**cannot find file to create array**"); 
            //search array
            echo array_search('EMPLOYEE NO. ',$current_array);      
            $i++;

            echo var_dump($current_array);
            }
        }
        closedir($dh);

        echo "$i files processed"; 
    }
}


?>

我从array_search得不到任何东西,我无法弄清楚为什么,它让我发疯。

这是var_dump正常工作的相关部分。

"NON NEGOTIABLE " [28]=> string(5) "9871 " [29]=> string(13) "EMPLOYEE NO. " [30]=> string(1) " " [31]=> string(3) "01 " [32]=> string(6) "SHIFT " [33]=> string(1) " " [34]=> string(4) "MIC " [35]=> string(19) "LOCATION HRS/UNITS "

我做错了吗?数组搜索的字符串与实际数组中的字符串完全相同,所以我无法弄清楚为什么它没有为我返回数组索引。

使用pre标签,这就是我得到的。

  [27]=>
  string(15) "NON NEGOTIABLE
"
  [28]=>
  string(5) "9871
"
  [29]=>
  string(13) "EMPLOYEE NO.
"
  [30]=>
  string(1) "
"
  [31]=>
  string(3) "01
"
  [32]=>
  string(6) "SHIFT
"
  [33]=>
  string(1) "
"
  [34]=>
  string(4) "MIC
"
  [35]=>
  string(19) "LOCATION HRS/UNITS
"
  [36]=>
  string(1) "
"

4 个答案:

答案 0 :(得分:3)

上传文件中的行位于不同的行中。 file()函数保留附加到数组项的换行符,这就是搜索不起作用的原因。

您可以从所有数组项中删除换行符,例如

array_walk($current_array, 'trim');

之后,您的搜索应该有效。

或者,正如KingCrunch所说,使用

file("/var/www/html/tmp/converted/" . $file, FILE_IGNORE_NEW_LINES);

答案 1 :(得分:2)

$current_array = array_map('trim', $current_trim);

也许FILE_IGNORE_NEW_LINES - Flag也适合你。

答案 2 :(得分:1)

不一定是答案,但也许您应该在数组搜索上尝试var_dump,有时整数(大多数是1和0,如在true和false中)不能正确打印出来。这将告诉你结果究竟是什么,而不是打印任何东西(这是我假设发生的事情,因为你没有说出它打印的内容)......

答案 3 :(得分:0)

我试图复制你的代码,一切正常。

也许试试in_array()吧。这将检查是否存在值。如果这不起作用,请尝试搜索不带空格的字符串。