I am trying to count the number of dimensions in an array. I used my
google-fu and came up with answers that don't actually work because I can
have multi-dimensional array's where one int he middle is multi and the one
after not. Below is my latest set of test code (I have been playing with it
for hours (with varying results), none correct), It currently returns 15
dimensions and should be returning 5

<?php
echo "\n";
$test = new test();

$array = array();
$array[0] = '[0]';
$array[1][0] = '[1][0]';
$array[1][1] = '[1][1]';
$array[2][0][0] = '[2][0][0]';
$array[2][0][1] = '[2][0][1]';
$array[2][1][0] = '[2][1][0]';
$array[2][1][1] = '[2][1][1]';
$array[3][0][0][0] = '[3][0][0][0]';
$array[3][0][0][1] = '[3][0][0][1]';
$array[3][1][0][0] = '[3][1][0][0]';
$array[3][1][0][1] = '[3][1][0][1]';
$array[3][1][1][0] = '[3][1][1][0]';
$array[3][1][1][1] = '[3][1][1][1]';
$array[4][0][0][0][0] = '[4][0][0][0][0]';
$array[4][0][0][0][1] = '[4][0][0][0][1]';
$array[4][1][0][0][0] = '[4][1][0][0][0]';
$array[4][1][0][0][1] = '[4][1][0][0][1]';
$array[4][1][1][0][0] = '[4][1][1][0][0]';
$array[4][1][1][0][1] = '[4][1][1][0][1]';
$array[4][1][1][1][0] = '[4][1][1][1][0]';
$array[4][1][1][1][1] = '[4][0][0][0][1]';
$array[5][0][0][0] = '[5][0][0][0]';
$array[5][0][0][1] = '[5][0][0][1]';
$array[5][1][0][0] = '[5][1][0][0]';
$array[5][1][0][1] = '[5][1][0][1]';
$array[5][1][1][0] = '[5][1][1][0]';
$array[5][1][1][1] = '[5][1][1][1]';
$array[6][0][0] = '[6][0][0]';
$array[6][0][1] = '[6][0][1]';
$array[6][1][0] = '[6][1][0]';
$array[6][1][1] = '[6][1][1]';
$array[7][0] = '[7][0]';
$array[7][1] = '[7][1]';
$array[8] = '[8]';

echo 'The array has '.$test->countNumberOfDimensionsOfAnArray($array)."
dimensions\n";
//echo print_r($array,TRUE);


class test
{
    public function isMultDimensionalArray($array)
    {
        $return = FALSE;

        if(is_array($array)){
            foreach($array as $value){
                if(is_array($value)){
                    $return = TRUE;
                }
            }
        }
        return $return;
    }

    public function countNumberOfDimensionsOfAnArray($array)
    {
        $dimensions = 0;

        if(is_array($array)){
            $dimensions++;
            foreach($array as $key=>$value){
                if($this->isMultDimensionalArray($value)){
                    $dimensions = $dimensions +
$this->countNumberOfDimensionsOfAnArray($value);
                }
            }
        }
        return $dimensions;
    }
}
?>

Joey Derrico
_______________________________________________
New York PHP User Group Community Talk Mailing List
http://lists.nyphp.org/mailman/listinfo/talk

http://www.nyphp.org/show-participation

Reply via email to