PHP Array Search не работает - PullRequest
       3

PHP Array Search не работает

1 голос
/ 19 ноября 2010

Кто-нибудь сможет мне помочь с тем, почему мой array_search не работает в этом сценарии PHP, который я написал.Я возился с этим в течение нескольких дней и не могу понять эту проблему.Я попытался переместить array_search везде, внутри цикла, вне цикла, и я получаю те же результаты.Я пробовал искать различные значения массива, я пытался включить мои собственные функции для поиска массива, который я нашел в Интернете.Я знаю, что значения находятся в массиве, потому что у меня есть массивы, напечатанные в текстовый файл для отладки, и теперь я не знаю, что искать дальше.Есть идеи?

   <?php 
//this variable tells us how many drupal nodes or 'paystub pages' we need to create
$nodeCount = 0;
$i = 0;
//needed for creating a drupal node
//for this code to work this script must be run from the root of the drupal installation
require_once './includes/bootstrap.inc';
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
if ($handle = opendir('/var/www/html/pay.*********group.com/upload')) 
{
    /* This is the correct way to loop over the directory. */
    while (false !== ($file = readdir($handle))) 
    {
       if ($file != "." && $file != "..") 
       {
            $nodeCount++;
            //We convert the pdf documents into text documents and move put them in the converted folder
            $command = "pdftotext /var/www/html/pay.*********group.com/upload/" . $file . " /var/www/html/pay.*********group.com/upload/converted/" . $file . ".txt";
            //Execute the command above
            $output = exec($command);

        }   
    }       
    closedir($handle);      
}
//subtract two because the folders "array" and "converted" are included because PHP does not differentiate
//between folders and files
$nodeCount = $nodeCount - 2; 
echo "<br />";
echo "<b> $nodeCount pdf files converted </b>";
echo "<br />";
//open the directory
if ($handle2 = opendir('/var/www/html/pay.*********group.com/upload/converted')) 
{

    //check to see if we have reached the last file of our directory, if not stay in loop
    while (false !== ($currentText = readdir($handle2))) 
    {
        //filter out files named . and ..
       if ($currentText != "." && $currentText != "..") 
       {
            //Create a file for array to be printed to
            $createArray = fopen("/var/www/html/pay.*********group.com/upload/arrays/" . $currentText, "w+") or die ("Cannot find file to create array, ID 2");


            //read the file we are on from the loop into the array 
            $currArray = file("/var/www/html/pay.*********group.com/upload/converted/" . $currentText) or die ("Cannot find file to create array, ID 1");


            $ArrSearch = array_search("EMPLOYEE NO. ", $currArray);

            echo "<br />";
            echo "<b> $ArrSearch index found </b>";
            echo "<br />";

            //array_trim($currArray[$i]);           
            //var_dump($currArray[$i]);

            //print array to .txt file for debugging purposes
            $out = print_r($currArray, true);
            fwrite($createArray, $out);
            fclose($createArray);
            $i++;   

        }           
    }
}
?>

edit: я исправил код, основываясь на ваших выводах, я тоже обновил код здесь.С приведенным выше кодом это результат, который я получаю при попытке конвертировать 6 PDF-файлов.Рядом с каждым индексом у меня должен быть индекс массива из каждого поиска

6 pdf files converted 

index found 

index found 

index found 

index found 

index found 

index found 

Ответы [ 4 ]

4 голосов
/ 19 ноября 2010

Я думаю, что вы изменили иголку и стог сена в своих аргументах ...

$ArrSearch = array_search("EMPLOYEE NO. ", $currArray);

По запросу, комментарий ушел в ответ

@ meagar: я не был уверен, что это была проблема, или они исчерпали это и просто пытаются что-то предпринять после двух дней разочарования.

1 голос
/ 19 ноября 2010

array_search ( игла , стог сена )

Разве вы не ошибаетесь? (Ищите иголка в стоге сена , а не наоборот).

0 голосов
/ 19 ноября 2010

Я предполагаю, что вы ищете строки, на которых есть номер сотрудника, например, "СОТРУДНИК № 7" и так далее.Если вы используете array_search("EMPLOYEE NO. ", $currArray), он ищет строки, которые точно совпадают с "EMPLOYEE NO.", Поэтому вы не получаете хитов.Начните с «№ РАБОТНИКА». Вы должны перебрать массив и использовать strpos() для поиска совпадений.

0 голосов
/ 19 ноября 2010

$ idx = array_search ($ needle, $ haystack);

вам нужно поменять местами иглу и стог сена в вашем коде

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