PHP Array For Each未读取$_POST[';item';]数据


PHP Array For Each not reading $_POST['item'] data

以下代码不是

<?php
$deletinglist = addQuotes($_POST['delimglist']);
$deletelist = array($deletinglist);
foreach ($deletelist as $filename) {
unlink(dirname(__FILE__) . "/uploads/" . $filename);
}
function addQuotes($string) {
    return '"'. implode('","', explode(',', $string)) .'"';
}
?>

此处为$_POST['delimglist'] = "C0d49a7de7b635477125ffffa8df7b932.jpg,C0d49a7de7b635477125ffffa8df7b934.jpg,C0d49a7de7b635477125ffffa8df7b935.jpg";

如果我使用$deletelist = array("C0d49a7de7b635477125ffffa8df7b932.jpg","C0d49a7de7b635477125ffffa8df7b934.jpg","C0d49a7de7b635477125ffffa8df7b935.jpg");

它工作正常,但如果我使用$deletelist = array($deletinglist);,它就不工作了。

当我尝试像上面的一样使用时,我收到了以下警告

Warning: unlink(/home/...somepath.../uploads/"C0d49a7de7b635477125ffffa8df7b932.jpg","C0d49a7de7b635477125ffffa8df7b934.jpg","C0d49a7de7b635477125ffffa8df7b935.jpg"): No such file or directory in /home/...somepath.../deletefile.php on line 9

我不知道为什么要在文件名周围加引号?代码应该如此简单:

<?php
$deletelist = explode(',', $_POST['delimglist']);
foreach ($deletelist as $filename) {
    unlink(dirname(__FILE__) . "/uploads/" . $filename);
}
?>

您所要做的就是将$deleteList作为单个元素放入数组中。您希望用","分隔这些值。使用$deleteList = explode(',', $deleteList);

以下内容不同:

$arr1 = Array("a", "b", "c");
$str  = "a,b,c";
$arr2 = Array($str);

第一个例子中的逗号是一种语言构造:将它们写在一个变量中并不意味着它们神奇地获得了语言构造能力;在字符串中,它们只是字符。

类似地,这个:

$str = "a,b,c";
foo($str);

与此相同:

foo("a,b,c");

而不是这个:

foo("a", "b", "c");

您必须使用一个函数来显式拆分字符串$_POST['delimglist']:

$deleteList = explode(',', $_POST['delimglist']);