在php中查找多维数组中有效键的数量

在php中查找多维数组中有效键的数量

问题描述:

I need to know how many arrays have valid keys, how many arrays with valid keys in multidimensional array. Let me explain:

Input:

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] =>
                        )
                )
        ) 
    )

The mediums[65] next array contains 2 valid keys (1 and 2). The mediums[769] next array contains no valid keys

Therefore only mediums[65] contains valid keys, so total of arrays with valid keys = 1. I need to find that total. How ?

I've try using array_keys and array_filter, with no success (or either i'm doing it wrong)

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;