2011-05-08 102 views
1

今天我遇到了脚本问题,我的脚本应该搜索(.css文件),我已经使用代码(1-搜索根目录中的所有子文件夹文件夹=== 2-通过使用foreach(){glob ....}使子文件夹的所有路径=== 3-,脚本应该找到css文件的所有路径,为foreach提供的参数无效() - 使用glob

这里是我的代码: -

$path = ''; 
    $stack[] = $dir; 
    while ($stack) { 
     $thisdir = array_pop($stack); 
     if ($dircont = scandir($thisdir)) { 
      $i=0; 
      while (isset($dircont[$i])) { 
       if ($dircont[$i] !== '.' && $dircont[$i] !== '..') { 
        $current_file = "{$thisdir}/{$dircont[$i]}"; 
        if (is_dir($current_file)) { 
         $path[] = "{$thisdir}/{$dircont[$i]}"; 
         $stack[] = $current_file; 
        } 
       } 
       $i++; 
      } 
     } 
    } 
    $path[] = $dir; 



    foreach($path as $dirname){ 

      $add = glob($dirname . '/*.css'); 

      foreach($add as $file){ 
       $code = file_get_contents($file); 
       $code_arab = arabicer($code); 
       file_put_contents($file,$code_arab); 


       } 
      } 

当我开始我的剧本,我发现一个减弱的消息: -

警告:()在/home/u274517531/public_html/libs/functions.php的foreach为无效的论点提供上线131

我敢肯定,我的数组不为空。

那么,任何人都可以帮我解决这个问题?

感谢,

回答

0

更改此:

$path[] = $dir; 
    foreach($path as $dirname){ 
      $add = glob($dirname . '/*.css'); 
      foreach($add as $file){ 

这样:

$path[] = $dir; 
var_dump($path); 
    foreach($path as $dirname){ 
      $add = glob($dirname . '/*.css'); 
var_dump($add); 
      foreach($add as $file){ 

我们不知道哪条线131,所以我不知道是哪的foreach失败。 (我猜第二个,因为第一个实际上被迫排列在$path[] = ..之间

+0

感谢您的回答,我没有==>第一个数组$ path []是得到这个信息 - >数组(3){[0] =>字符串(26)“../uploads/newtest/newtest”[1 ] => string(55)“../uploads/newtest/newtest/newtest - Copy - Copy - Copy”[2] => string(18)“../uploads/newtest”} ||||第二个数组$ add []返回了这个信息 - > bool(false)|| 131行现在是#139,它的第二个foreach – Programmer4me 2011-05-08 14:53:31

+0

所以,你现在知道问题及其解决方案吗? '$ dirname'不是一个(可读的)目录或其他东西。 “glob”失败。 'var_dump($ dirname)'确定。 'var_dump'是你最好的朋友。PHP =调试 – Rudie 2011-05-08 17:20:16

+0

我试过var_dump($ dirname); ,它给我的dirs名称,它的工作原理,问题在$添加,我不知道为什么脚本无法找到CSS文件,我确定有一个css文件在目录(/ uploads/newtest/newtest /新测试 - 复制 - 复制 - 复制),你有任何信息如何使glob()的作品? – Programmer4me 2011-05-09 16:17:23

1

你说你是确保您的数组不为空,但什么提供的foreach 无效的参数()错误信息的意思是,这是甚至不是一个数组。试试吧youself,如果你不相信:

var_dump($add); 

最有可能的,有查找文件和glob()一个错误返回FALSE

返回包含 匹配的文件/目录的数组,如果没有文件匹配,则为空的 数组错误或 错误为FALSE。

+0

检查我的答案#2 :) – Programmer4me 2011-05-08 14:55:47

+0

这是正确的评论,但问题是如何让功能水珠()的作品?我确定目录中有一个css文件。谢谢大家。 – Programmer4me 2011-05-09 16:19:29

0

我今天发现PHP脚本有同样的问题,并且需要从foreach循环切换到for循环来修复它。知道是什么意思,该阵列的外观和工作方式相同。

// Errors out 
$files = glob($directory.'*.html'); 
foreach($files as $file){ 
    echo($file); 
} 

// No error 
$files = glob($directory.'*.html'); 
for($i=0; $i<count($files); $i++){ 
    echo($files[$i]); 
} 
相关问题