【问题标题】:Count non-empty values in array (php)计算数组中的非空值(php)
【发布时间】:2017-11-20 10:43:48
【问题描述】:

我已经尝试过搜索,但我的问题在那里没有解决,因为我的情况似乎有点不同。

这是我的数组:

array(14) { [0]=> array(4) { ["index"]=> int(1) ["name"]=> string(19) "Parge Lenis die ..." ["score"]=> int(0) ["time"]=> string(8) "05:51:23" } [1]=> array(4) { ["index"]=> int(2) ["name"]=> string(8) "jiengels" ["score"]=> int(0) ["time"]=> string(8) "05:51:18" } [2]=> array(4) { ["index"]=> int(3) ["name"]=> string(6) "n!n-oX" ["score"]=> int(0) ["time"]=> string(8) "05:47:27" } [3]=> array(4) { ["index"]=> int(4) ["name"]=> string(8) "Maraskan" ["score"]=> int(0) ["time"]=> string(8) "05:44:45" } [4]=> array(4) { ["index"]=> int(5) ["name"]=> string(0) "" ["score"]=> int(0) ["time"]=> string(8) "05:42:56" } [5]=> array(4) { ["index"]=> int(6) ["name"]=> string(0) "" ["score"]=> int(0) ["time"]=> string(8) "04:32:21" } [6]=> array(4) { ["index"]=> int(7) ["name"]=> string(5) "Heavy" ["score"]=> int(0) ["time"]=> string(8) "03:29:39" } [7]=> array(4) { ["index"]=> int(8) ["name"]=> string(0) "" ["score"]=> int(0) ["time"]=> string(8) "02:59:28" } [8]=> array(4) { ["index"]=> int(9) ["name"]=> string(0) "" ["score"]=> int(0) ["time"]=> string(8) "02:54:37" } [9]=> array(4) { ["index"]=> int(10) ["name"]=> string(0) "" ["score"]=> int(0) ["time"]=> string(8) "02:53:33" } [10]=> array(4) { ["index"]=> int(11) ["name"]=> string(6) "Fischi" ["score"]=> int(0) ["time"]=> string(8) "02:12:36" } [11]=> array(4) { ["index"]=> int(12) ["name"]=> string(0) "" ["score"]=> int(0) ["time"]=> string(8) "02:02:50" } [12]=> array(4) { ["index"]=> int(13) ["name"]=> string(0) "" ["score"]=> int(0) ["time"]=> string(8) "01:09:53" } ["count"]=> int(13) }

有些条目没有“名称”的值 - 因此我只想计算那些有名称的条目。

但是“array_filter”至少对我如何尝试使用它没有帮助:( => array_filter($myarray);

【问题讨论】:

    标签: php arrays multidimensional-array filter array-filter


    【解决方案1】:

    您可以像这样在名称列上使用 array_filter,live demo

    echo count(array_filter(array_column($array, 'name')));
    

    【讨论】:

    • 看到这个后我羞愧地删除了我的答案:P 这是一个有用的了解方法。
    【解决方案2】:

    您可以使用array_filter(),如下所示:

    <?php
    
    $array = array(
                array("index" => 1, "name" => "Parge Lenis die ..." , "score" => 0, "time" => "05:51:23"),
                array("index" => 2, "name" => "jiengels" , "score" => 0, "time" => "05:51:18"),
                array("index" => 3, "name" => "n!n-oX" , "score" => 0, "time" => "05:47:27"),
                array("index" => 4, "name" => "Maraskan" , "score" => 0, "time" => "05:44:45"),
                array("index" => 5, "name" => "" , "score" => 0, "time" => "05:42:56"),
                array("index" => 6, "name" => "" , "score" => 0, "time" => "04:32:21"),
                array("index" => 7, "name" => "Heavy" , "score" => 0, "time" => "03:29:39"),
            ); 
    
    $array_non_empty = array_filter($array, function($item){
        return (isset($item['name']) && $item['name']) ? TRUE : FALSE;
    });
    
    $count_non_empty = count($array_non_empty); // number of non-empty values
    
    echo $count_non_empty;
    

    【讨论】:

    • 不幸的是没有任何输出。我需要一个计数,例如“5” - 如果有 5 个条目的名称。
    • 我更新了我的答案。您可以使用count($array_non_empty) 来计算非空值。 @MrKayodoubleu
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-24
    • 2018-06-27
    • 1970-01-01
    • 2014-07-27
    • 2017-06-05
    • 2021-11-05
    相关资源
    最近更新 更多