配列内のすべてのアイテムで関数を実行することについてはよくわかりませんが、PHPはまだかなり新しいです。以下$pic_loc
は、実行された検索条件に一致する画像へのパスとファイル名を含むMySQLからのデータ配列です。
unlink
見つかったすべての人で関数を実行しようとしました。エラーは返されません。私は正しい道だとは思いませんforeach
が、誰かが私を正しい方向に向けることができますか?
$pic_loc = $cell_pictures['pic_loc']; //gathers an array from the database of files locations
$pics_to_delete .= "../../".$pic_loc; //corrects the directory
foreach($pics_to_delete as $pics_being_deleted) //deletes all pictures found
{
unlink($pics_being_deleted);
}
編集:私は両方の答えをたくさんいじくり回しました、私は問題なく個々のファイルに対してそれを行うことができるので、私は2層上のファイルを削除できることを知っています。これは私が現在行っていることですwhile()
。foreachが機能するための問題を引き起こしている可能性があると考えて、ループを取り除きました。
$data_array2 = mysql_query("SELECT * FROM pictures WHERE user_id = '".$id."'");
$cell_pictures = mysql_fetch_array($data_array2);
foreach($cell_pictures['pic_loc'] as $pics_being_deleted) //deletes all pictures found
{
unlink("../../".$pics_being_deleted);
}
これが今返すエラーです:
Warning: Invalid argument supplied for foreach() // on the line that the foreach is on
編集:わかりました、それは厄介でした、しかし私はそれを手に入れました!!! クエリからのデータは配列であると思われるかもしれませんが、実際には配列として設定する必要はありませんでした。これは私がそれをした方法です:
$data_array2 = mysql_query("SELECT pic_loc FROM pictures WHERE user_id = '".$id."'");
while($cell_pictures = mysql_fetch_array($data_array2))
{
$the_pics = $cell_pictures['pic_loc'];
$pics_as_array = array($the_pics);
}
foreach($pics_as_array as $pics_being_deleted)
{
unlink("../../".$pics_being_deleted);
}
これはうまく機能します。これを読むために時間を割いてくれてありがとう!-マイク