-1

こんにちは、拡張子を使用してすべてのファイルを削除する方法を作成しました。

これがコードです

function RemoveAllFiles($extensions)
{
   foreach($extensions as $extension)
   {
       $files = glob("*.".$extension."");

      foreach($files as $file)
      {
         unlink($file);
      }

    }
 }

そして私はこのように呼んでいます

$commonObj =  new CommonUtility();
$extesions = array("zip","xlsx");
$commonObj->RemoveAllFiles($extesions);

両方のファイルが存在する場合、正常に動作します。そうでない場合、このエラーが発生します

 Warning: Invalid argument supplied for foreach() in CommonUtilities.class.php on line 356

任意の助けをいただければ幸いです。

4

4 に答える 4

1

同様に答えられている間:

function removeAllFiles(array $extensions) {
    foreach(array_filter($extensions) as $extension) {
        $files = glob("*.{$extension}");
        if (is_array($files) {
            foreach($files as $file) {
                unlink($file);
            }
        }
    }
}    

引数のタイプヒントは、同じ問題に対してarray最初のものを絶縁します。foreach同様に、is_array($files)2番目を絶縁します。空の配列が与えられるとcount($files)2番目のブロックがスキップされるため、必要ありません。foreach

array_filter($extensions)、、、、などの「falsey」値を削除します。これはfalsenullに渡され""ないように保護するために必要な場合があります。ただし、これを省略したい場合があります。これは、「」をマスクとして除外するフィルター処理されるかどうかを思い出せないためですクイックテストでは、フィルター処理されることが示されています)。これは完全に有効な拡張機能です。"*."glob"0""0""false"*.0

removeAllFiles(["foo"]);                // no problem

removeAllFiles(["foo", "bar"]);         // also no problem

removeAllFiles("foo");                  // problem! has to be an array

removeAllFiles([false, null, ""]);      // no problem, but no action; filtered

removeAllFiles([false, null, "foo"]);   // no problem, only "foo"
于 2013-02-14T12:07:43.917 に答える
0
if(is_array($files)){
      foreach($files as $file)
      {
         unlink($file);
      }
}

配列であるかどうかをチェックします。それ以外の場合$filesはforeachを実行しません。

于 2013-02-14T11:25:49.973 に答える