Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/254.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 取消设置空数组元素_Php_Arrays_Unset - Fatal编程技术网

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']
是一个数组,如下图所示: