今天我的脚本出现问题,我的脚本应该搜索(.css文件)
我使用了代码:
这是我的代码:
$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);
}
}
当我开始编写脚本时,我发现了一条消息:
警告:在第131行的/home/u274517531/public_html/libs/functions.php中为foreach()提供的参数无效
我确定我的数组不是空的。
那么,任何人都可以帮我解决这个问题吗?
感谢。
答案 0 :(得分:1)
你说你确定你的数组不是空的,但为foreach()错误消息提供的无效参数意味着它甚至不是数组 。如果你不相信,请自己尝试一下:
var_dump($add);
最有可能的是,找到文件时出错,glob()正在返回FALSE
:
返回包含的数组 匹配的文件/目录,一个空的 数组,如果没有文件匹配或FALSE打开 错误。
答案 1 :(得分: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[] = ..
)
答案 2 :(得分: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]);
}