php 如何统计多维数组中非空数组值的个数?

ccrfmcuu  于 2023-03-11  发布在  PHP
关注(0)|答案(4)|浏览(149)
[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
                )

        )

这是上面的数组,它给出数组值。正如你所看到的,只有一个“tmp_name”字段不是空的,其他字段都是空的。我如何检查和计数是否至少有一个tmp_name不是空的?我有四个输入类型用于上传图像,我想检查至少有一个图像应该上传。

pkmbmrz7

pkmbmrz71#

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

<?php
$pending_work = [
     [
        '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
    ]
];
$filtered_work = array_filter($pending_work, function($entry) {
    return !empty($entry['tmp_name']);
});
print_r($filtered_work);

上面代码的输出显然是:

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

)

你可以在那里计算条目数或者使用结果,不管怎样。

wljmcqd8

wljmcqd82#

函数**array_filter()**本身不会从多维数组中删除空的子数组,在PHP中需要使用一个额外的函数与array_filter()函数一起从多维数组中删除空元素。

  • array_map()函数将数组的元素发送给回调函数。
  • array_filter()函数使用回调函数过滤数组中的元素。

下面的代码将在PHP中删除多维数组中的所有空数组元素:

<?php
$array = array_map('array_filter', $array);
$array = array_filter($array);
jjjwad0x

jjjwad0x3#

使用下面的代码array_filter有助于在这种情况下。
Click here for demo

$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);
nnvyjq4y

nnvyjq4y4#

使用array_columnarray_filter

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

 }

相关问题