ホームページ >バックエンド開発 >PHPの問題 >PHPで配列の次元を決定する方法

PHPで配列の次元を決定する方法

PHPz
PHPzオリジナル
2023-04-27 09:11:471110ブラウズ

PHP では、配列は最も一般的なデータ型の 1 つです。配列を使用すると、一連のデータを特定の方法で結合して、データの操作と管理を容易にすることができます。配列の次元は、配列を分類および説明するための方法です。

PHP では、配列の次元は配列要素の入れ子構造に基づいて記述されます。配列に要素が 1 つだけ含まれている場合、配列の次元は 1 です。たとえば:

$arr = array(1, 2, 3, 4);
echo count($arr); // 输出 4

上記の配列には要素が 1 つだけ含まれているため、その次元は 1、配列の長さは 4 です。

配列に他の配列要素が含まれる場合、配列の次元はネストされた配列を含むレベルの数になります。例:

$arr2 = array(
    1, 
    array(
        2, 
        array(3, 4), 
        5
    ),
    6,
    array(7, 8)
);
echo count($arr2); // 输出 4

上記の配列には 2 つのネストされた配列が含まれているため、その次元は 2 で、配列の長さは 4 です。

では、配列の次元を決定するにはどうすればよいでしょうか?

1. 再帰を使用して配列の次元を決定する

再帰はコンピューター サイエンスで広く使用されているアイデアであり、多層の入れ子になったデータを処理できます。再帰を使用して配列の次元を決定できます。コードは次のとおりです:

// 递归计算数组维度
function getDimension($arr)
{
    if (!is_array($arr)) {
        return 0;
    } else {
        $max = 0;
        foreach ($arr as $subArr) {
            $subArrDimension = getDimension($subArr);
            if ($subArrDimension > $max) {
                $max = $subArrDimension;
            }
        }
        return $max + 1;
    }
}

上記の関数getDimension($arr) は任意の配列を受け入れ、配列の次元を計算できます。再帰的に。このうち is_array($arr) は要素が配列型であるかどうかを判定するために使用され、配列型でない場合は要素の次元が 0 であることを示す 0 が返されます。配列型の場合は、配列要素を反復処理し、毎回その部分配列の次元を再帰的に計算し、最終的に部分配列内の最大の次元を返します。

2. ネストされた foreach を使用して配列の次元を決定する

実際、ネストされた foreach ループを通じて配列の次元を決定することもできます。配列のすべての要素が配列型でない場合、その次元は 1 になります。配列型の要素が含まれる場合、その次元は最も内側の部分配列の次元に 1 を加えたものと等しくなります。コードは次のとおりです。

// 使用 foreach 嵌套计算维度
function getDimension2($arr)
{
    if (!is_array($arr)) {
        return 0;
    } else {
        $depth = 1;
        foreach ($arr as $subArr) {
            if (is_array($subArr)) {
                $subArrDepth = getDimension2($subArr) + 1;
                if ($subArrDepth > $depth) {
                    $depth = $subArrDepth;
                }
            }
        }
        return $depth;
    }
}

上記のコードは関数 getDimension2($arr) を定義しており、その計算方法は getDimension($arr) と同じです。ただし、ネスティング foreach ループを使用します。このうち、要素が配列型でない場合は直接 0 が返され、配列型の場合は各要素をたどって最も内側の部分配列の次元を計算し、それに 1 を加算します。

3. array_filter 関数を使用して配列の次元を決定します

PHP 組み込み関数 array_filter() を使用して、配列内の要素をフィルタリングできます。条件を満たさない場合は、フィルタリング結果に基づいて新しい配列を返します。これを使用して配列の次元を決定できます。コードは次のとおりです。

// 使用 array_filter 函数计算维度
function getDimension3($arr)
{
    if (!is_array($arr)) {
        return 0;
    } else {
        $child = current($arr);
        $notEmpty = array_filter($arr);
        if (count($notEmpty) == 0) {
            return 1;
        } else {
            return is_array($child) ? getDimension3($child) + 1 : 1;
        }
    }
}

上記のコードは、array_filter() 関数を使用する関数 getDimension3($arr) を定義します。このうち、current($arr)を使用して配列の最初の要素を取り出し、その要素が配列型であるかどうかを判断します。配列型でない場合は、配列の次元が 1 であることを意味します。配列型の場合は、array_filter($arr) を使用して配列内のすべての空の要素をフィルターで除外します。返された new 配列の長さは、配列の次元を決定するために使用されます。

4. str_repeat 関数を使用して配列の次元を決定する

もう 1 つの簡単な方法は、文字列の長さの変化によって配列の次元を決定することです。ここでは str_repeat 関数を使用します。具体的な実装は次のとおりです。

// 使用 str_repeat 函数计算维度
function getDimension4($arr)
{
    $temp = $arr;
    $i = 0;
    while (is_array($temp)) {
        $temp = current($temp);
        $i++;
        $str = str_repeat('.', $i);
        echo '<pre class="brush:php;toolbar:false">'.$str.implode($str, $temp).'
';     }     return $i; }

上記のコードは、current() 関数と str_repeat を使用する関数 getDimension4($arr) を定義します。 ( )### 関数。関数内で while ループを使用して、配列内のネストされた部分配列を継続的に走査し、走査するたびに間隔をあけた文字列を出力し、最後に i の値を返します。

上記は、配列の次元を決定するいくつかの方法ですが、その中で、再帰的実装メソッドと foreach 実装メソッドがより一般的に使用されます。開発者は、実際の状況に応じてさまざまな方法を使用して実装することを選択できます。

以上がPHPで配列の次元を決定する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。