不太了解在数组中的每个项目上运行函数,这对 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);
}
这很好用。非常感谢您花时间阅读本文!-麦克风