Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/261.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 - Fatal编程技术网

Php 如何计算多维数组中非空数组值的个数?

Php 如何计算多维数组中非空数组值的个数?,php,Php,这是上面给出数组值的数组。如您所见,只有一个“tmp_name”字段不是空的,其他字段是空的。我如何检查和计数tmp_名称中是否至少有一个不为空?。我有四个上传图像的输入类型,我想检查至少一个图像应该上传 使用array\u列和array\u过滤器 [pending_work] => Array ( [0] => Array ( [tmp_name] => D:\xa

这是上面给出数组值的数组。如您所见,只有一个“tmp_name”字段不是空的,其他字段是空的。我如何检查和计数tmp_名称中是否至少有一个不为空?。我有四个上传图像的输入类型,我想检查至少一个图像应该上传

使用
array\u列
array\u过滤器

[pending_work] => Array
        (
            [0] => Array
                (
                    [tmp_name] => D:\xampp\tmp\php4B33.tmp
                    [error] => 0
                    [name] => Chrysanthemum.jpg
                    [type] => image/jpeg
                    [size] => 879394
                )

            [1] => Array
                (
                    [tmp_name] => 
                    [error] => 4
                    [name] => 
                    [type] => 
                    [size] => 0
                )

            [2] => Array
                (
                    [tmp_name] => 
                    [error] => 4
                    [name] => 
                    [type] => 
                    [size] => 0
                )

            [3] => Array
                (
                    [tmp_name] => 
                    [error] => 4
                    [name] => 
                    [type] => 
                    [size] => 0
                )

        )

提供最大灵活性的最佳方法是过滤策略:

if(count(array_filter(array_column($array['pending_work'],'tmp_name')))>0){

 }

您可以计算其中的条目或使用结果,无论什么

在这种情况下,使用下面的代码
array\u filter
会有所帮助


单独使用函数array\u filter()无法从多维数组中删除空子数组,需要与array\u filter()函数一起使用一个附加函数,以便在PHP中从多维数组中删除空元素

  • 函数的作用是:将数组的元素发送到回调函数 功能
  • 函数的作用是:使用 回调函数
以下代码将从PHP中的多维数组中删除所有空数组元素:

$array = [
     [
        'tmp_name' => 'D:\\xampp\\tmp\\php4B33.tmp',
        'error' => 0,
        'name' => 'Chrysanthemum.jpg',
        'type' => 'image/jpeg',
        'size' => 879394
    ],
    [
        'tmp_name' => null,
        'error' => 4,
        'name' => null,
        'type' => null,
        'size' => 0
    ],
    [
        'tmp_name]'=> null,
        'error' => 4,
        'name' => null,
        'type' => null,
        'size' => 0
    ],
    [
        'tmp_name' =>  null,
        'error' => 4,
        'name' => null,
        'type' => null,
        'size' => 0
    ]
];
$result_arary = array_filter($array, function($arr) {
    return !empty($arr['tmp_name']);
});
echo count($result_arary);
print_r($result_arary);

使用foreach在数组上迭代。你知道如何使用foreach
foreach
?请先尝试使用一个可以接受的用户名。这会有帮助。
Array
(
    [0] => Array
        (
            [tmp_name] => D:\xampp\tmp\php4B33.tmp
            [error] => 0
            [name] => Chrysanthemum.jpg
            [type] => image/jpeg
            [size] => 879394
        )

)
$array = [
     [
        'tmp_name' => 'D:\\xampp\\tmp\\php4B33.tmp',
        'error' => 0,
        'name' => 'Chrysanthemum.jpg',
        'type' => 'image/jpeg',
        'size' => 879394
    ],
    [
        'tmp_name' => null,
        'error' => 4,
        'name' => null,
        'type' => null,
        'size' => 0
    ],
    [
        'tmp_name]'=> null,
        'error' => 4,
        'name' => null,
        'type' => null,
        'size' => 0
    ],
    [
        'tmp_name' =>  null,
        'error' => 4,
        'name' => null,
        'type' => null,
        'size' => 0
    ]
];
$result_arary = array_filter($array, function($arr) {
    return !empty($arr['tmp_name']);
});
echo count($result_arary);
print_r($result_arary);
<?php
$array = array_map('array_filter', $array);
$array = array_filter($array);