配列の次元数を決定する
php メソッド: 1. この関数は、それ自体を再帰的に呼び出すことによって配列の次元を決定し、「foreach()」関数を使用してすべての要素をループします。は配列のままなので、次元を追加します。 1; 2. 「json_encode()」関数を使用して配列を JSON 文字列に変換し、正規表現を使用して JSON 文字列のレベルの深さを決定します。
このチュートリアルのオペレーティング システム: Windows10 システム、PHP バージョン 8.1.3、DELL G3 コンピューター。
配列の次元数を決定する方法:
方法 1: 再帰を使用して配列の次元を決定する
コード例の関数以下は再帰的に呼び出されます 配列の次元をそれ自体で決定し、すべての要素をループしてもまだ配列である場合は、次元に 1 を追加します。
/** * 判断数组维度 * * @param array $arr * @return int */ function array_dimension($arr) { $dimension = 0; if (is_array($arr)) { foreach ($arr as $item) { if (is_array($item)) { $sub_dimension = array_dimension($item); if ($sub_dimension > $dimension) { $dimension = $sub_dimension; } } } $dimension++; } return $dimension; } // 示例数据 $arr1 = array(1, 2, 3); $arr2 = array(array(1, 2), array(3, 4)); $arr3 = array(array(array(1, 2), array(3, 4)), array(array(5, 6), array(7, 8))); echo '数组1的维度:' . array_dimension($arr1) . '<br>'; echo '数组2的维度:' . array_dimension($arr2) . '<br>'; echo '数组3的维度:' . array_dimension($arr3) . '<br>';
上記のコードの出力結果:
数组1的维度:1 数组2的维度:2 数组3的维度:3
方法 2: JSON 形式に変換して配列の次元を決定します
以下のコード例の関数は、配列をJSON文字列、正規表現でJSON文字列の階層の深さを判断して実装します。
/** * 判断数组维度 * * @param array $arr * @return int */ function array_dimension($arr) { $json_arr = json_encode($arr, JSON_UNESCAPED_UNICODE); $max_depth = 1; if (preg_match_all('/(?:^|\{|\,)\s*(\[(?R)*\]|\{(?R)*\})\s*(?:(?=\:)|$)/', $json_arr, $m)) { foreach ($m[1] as $val) { $depth = substr_count(str_replace(["[", "{", "]", "}"], "", $val), ',') + 1; if ($depth > $max_depth) { $max_depth = $depth; } } } return $max_depth; } // 示例数据 $arr1 = array(1, 2, 3); $arr2 = array(array(1, 2), array(3, 4)); $arr3 = array(array(array(1, 2), array(3, 4)), array(array(5, 6), array(7, 8))); echo '数组1的维度:' . array_dimension($arr1) . '<br>'; echo '数组2的维度:' . array_dimension($arr2) . '<br>'; echo '数组3的维度:' . array_dimension($arr3) . '<br>';
上記のコード出力結果:
数组1的维度:1 数组2的维度:2 数组3的维度:3
上記は、配列の次元を決定するためによく使用される 2 つの方法です。実装は比較的簡単です。独自の方法に応じて、適切な方法を選択できます。ニーズ。
以上がPHPで配列の次元数を確認する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。