2017-08-12 92 views
-1
[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是否为空?我有四种用于上传图片的输入类型,我想检查是否应该上传至少一张图片。如何计算多维数组中非空数组的值?

+1

遍历与一个foreach阵列。你知道如何使用'foreach'? –

+1

请尝试使用首先可接受的用户名。 – localheinz

+0

它可以提供帮助。 。 http://php.net/manual/en/function.array-filter.php –

回答

0

使用array_columnarray_filter

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

} 
0

最好的方法,提供了最大的灵活性,是一个过滤的策略:

<?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 
     ) 

) 

你可以计算那里的条目或者使用结果,不管。

0

使用下面的代码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);