【问题标题】:Find how many arrays with valid keys in multidimensional array in php在php中的多维数组中查找有多少个具有有效键的数组
【发布时间】:2017-03-31 03:54:15
【问题描述】:

我需要知道有多少个数组有有效的键,在多维数组中有多少个有有效的键。让我解释一下:

输入:

Array
(
    [65] => Array
        (
            [1] => Array
                (
                    [0] => Array
                        (
                            [mediumid] => 65
                            [mediumname] => VINYL
                            [trackid] => 525
                            [trackposition] => 1
                            [tracklocation] => SIDE A
                            [tracknumber] => 1
                            [trackname] => I love u
                        )

                    [1] => Array
                        (
                            [mediumid] => 65
                            [mediumname] => VINYL
                            [trackid] => 526
                            [trackposition] => 1
                            [tracklocation] => SIDE A
                            [tracknumber] => 2
                            [trackname] => Sun is yellow
                        )

                )

            [2] => Array
                (
                    [0] => Array
                        (
                            [mediumid] => 65
                            [mediumname] => VINYL
                            [trackid] => 527
                            [trackposition] => 2
                            [tracklocation] => SIDE B
                            [tracknumber] => 1
                            [trackname] => Car red
                        )

                    [1] => Array
                        (
                            [mediumid] => 65
                            [mediumname] => VINYL
                            [trackid] => 528
                            [trackposition] => 2
                            [tracklocation] => SIDE B
                            [tracknumber] => 2
                            [trackname] => Lady in red
                        )

                )

        )

     [769] => Array
        (
            [] => Array
                (
                    [0] => Array
                        (
                            [mediumid] => 769
                            [mediumname] => DVD
                            [trackid] =>
                            [trackposition] =>
                            [tracklocation] => 
                            [tracknumber] =>
                            [trackname] =>
                        )
                )
        ) 
    )

mediums[65] 下一个数组包含 2 个有效键(1 和 2)。 mediums[769] 下一个数组不包含有效键

因此只有 mediums[65] 包含有效键,因此具有有效键的数组总数 = 1。 我需要找到那个总数。怎么样?

我尝试使用 array_keys 和 array_filter,但没有成功(或者我做错了)

【问题讨论】:

  • “有效密钥”的定义是什么?
  • @Barmar 如果包含 0 或为空,则无效

标签: php arrays validation multidimensional-array


【解决方案1】:

PHP code demo

<?php
$array=Array
(
    65 => Array
        (
            1 => Array
                (
                    0 => Array
                        (
                            "mediumid" => 65,
                            "mediumname" => "VINYL",
                            "trackid" => 525,
                            "trackposition" => 1,
                            "tracklocation" => "SIDE A",
                            "tracknumber" => 1,
                            "trackname" => "I love u"
                        ),

                    1 => Array
                        (
                            "mediumid" => 65,
                            "mediumname" => "VINYL",
                            "trackid" => 526,
                            "trackposition" => 1,
                            "tracklocation" => "SIDE A",
                            "tracknumber" => 2,
                            "trackname" =>"Sun is yellow"
                        )

                ),

            2 => Array
                (
                    0 => Array
                        (
                            "mediumid" => 65,
                            "mediumname" => "VINYL",
                            "trackid" => 527,
                            "trackposition" => 2,
                            "tracklocation" => "SIDE B",
                            "tracknumber" => 1,
                            "trackname" => "Car red"
                        ),

                    1 => Array
                        (
                            "mediumid" => 65,
                            "mediumname" => "VINYL",
                            "trackid" => 528,
                            "trackposition" => 2,
                            "tracklocation" => "SIDE B",
                            "tracknumber" => 2,
                            "trackname" => "Lady in red"
                        )

                )

        ),

     769 => Array
        (
           ""  => Array
                (
                    0 => Array
                        (
                            "mediumid" => 769,
                            "mediumname" => "DVD",
                            "trackid" => "",
                            "trackposition" => "",
                            "tracklocation" => "",
                            "tracknumber" =>"",
                            "trackname" => ""
                        )
                )
        ) 
    );
$counter=0;
$trackedNull=false;
foreach($array as $key => $value)
{
    $keys=array_keys($array[$key]);
    foreach($keys as $arraykey)
    {
        if($arraykey=="")
        {
            $trackedNull=true;
            break;
        }
    }
    if($trackedNull==true)
    {
        $trackedNull=false;
    }
    else
    {
        $counter++;
    }
}
echo $counter;

【讨论】:

  • 您可以只使用if (in_array("", array_keys($array[$key]))) 而不是编写该循环。
  • @Barmar Perfect.. in_array 从我的脑海中跳过。但上面也可以正常工作
猜你喜欢
  • 2013-04-06
  • 2010-11-30
  • 1970-01-01
  • 2014-05-11
  • 1970-01-01
  • 1970-01-01
  • 2012-05-26
  • 2020-03-07
  • 2021-08-06
相关资源
最近更新 更多