Php 取消设置空数组元素
我使用的是Php 取消设置空数组元素,php,arrays,unset,Php,Arrays,Unset,我使用的是$\u文件,有时由于表单上输入了空文件,数组中有空数组元素。我正试图消除这些因素 我尝试了以下代码片段: foreach($_FILES['images']['name'] as $image) { if(empty($image)) { unset($image); } } foreach($_FILES['images']['name'] as $image) { if($image == "") { uns
$\u文件
,有时由于表单上输入了空文件,数组中有空数组元素。我正试图消除这些因素
我尝试了以下代码片段:
foreach($_FILES['images']['name'] as $image)
{
if(empty($image))
{
unset($image);
}
}
foreach($_FILES['images']['name'] as $image)
{
if($image == "")
{
unset($image);
}
}
foreach($_FILES['images']['name'] as $image)
{
if(!$image)
{
unset($image);
}
}
但是数组总是返回空元素。使用PHP删除空的$u文件数组元素是否真的有一种明智的方法?当您使用foreach($u文件['images']['name']作为$image)
语句$image成为数组中实际元素的副本时,您要做的是取消该副本,您应该这样做:
foreach( $_FILES['images']['name'] as $key => $value ) {
if( empty($value) ) {
unset( $_FILES['images']['name'][$key] );
}
}
除了无人回答之外,如果您还想从
类型
、tmp\u名称
、大小
等中删除元素,则数组使用:
// Before stripping
print_r($_FILES);
$length = count($_FILES['images']['name']);
for($i = 0; $i < $length; $i++){
if(empty($_FILES['images']['name'][$i]))
foreach($_FILES['images'] as $key => $value)
unset($_FILES['images'][$key][$i]);
}
// After stripping
print_r($_FILES);
//剥离前
打印(美元文件);
$length=计数($_文件['images']['name']);
对于($i=0;$i<$length;$i++){
if(空($_文件['images']['name'][$i]))
foreach($\u文件['images']作为$key=>$value)
取消设置($_文件['images'][$key][$i]);
}
//剥离后
打印(美元文件);
首先,您的问题并不具体,因为如果您使用的是单个文件,则不需要foreach($_FILES['images']['name']作为$image)。
再次在表单中输入空字段,这应该会触发案例4错误。也就是说,没有上传任何文件。因此,使用如下设置的错误方法
if($_FILES['upload']['error'] > 0){
echo 'the file couldnt be uploaded because';
switch($_FILES['upload']['error']){
case 1:
print 'the file exceeds max size in php.ini';
break;
case 2:
print 'the file exceeds max size in html settings';
break;
case 3:
print 'the file was partially uploaded';
break;
case 4:
print 'no file was uploaded';
break;
case 6:
print 'no temporary folder available';
break;
case 7:
print 'unable to write to disk';
break;
case 8:
print 'file upload stopped';
break;
default:
print 'a sys error occured';
break;
这样会通知您一个错误,并且您知道上传的是一个空图像。要保存自己,请释放UNSET()的压力。
如果是多次上传,你会有类似
foreach ($_FILES['upload']['name'] as $number => $filename)
最好使用错误代码
foreach( $_FILES['images']['error'] as $key => $value ) {
if($value==0) {
// file good do code
} else {
unset( $_FILES['images']['name'][$key] );
}
}
这个非循环的答案怎么样
$in = $_FILES['images']['name'];
$out = array_filter($in);
或者,如果您喜欢一行:
$out = array_filter($_FILES['images']['name']);
从:
“如果未提供回调,则所有等于FALSE的输入项(请参见转换为布尔值)都将被删除。”是否可以添加带有空元素的数组打印?打印($\u文件);的结果就可以了。对不起,我应该更具体一些。
$\u文件['images']['name']
是一个数组,如下图所示: