配列が数次元配列であるかどうかを確認する
#この記事の動作環境: Windows 10 システム、php8.1.3 バージョン、dell g3 コンピューター。 PHP では、配列が一次元配列であるか多次元配列であるかを確認するのが一般的なタスクです。配列操作を扱う場合、配列の次元を理解することが重要です。配列の次元は、配列を走査して操作するために使用するメソッドに影響するからです。 それでは、配列が 1 次元配列であるか多次元配列であるかを確認するにはどうすればよいでしょうか?以下にいくつかの判定方法を紹介します。php メソッド: 1. ループ再帰判定を使用すると、配列を走査する再帰関数を作成し、入れ子になった配列に遭遇したときに同じ関数を再帰的に呼び出すことができます。配列要素でない場合は、現在通過している層の数を返します; 2. 「array_filter」関数を使用して、配列の総要素数と再帰回数が等しいかどうかを比較します。等しくない場合は、配列が多次元配列であること; 3. array_walk_recursive 関数などを使用します。
1. ループ再帰を使用して決定する
ループ再帰を使用することは、配列の次元をチェックする一般的な方法です。配列を反復処理し、入れ子になった配列が見つかったときに同じ関数を再帰的に呼び出す再帰関数を作成できます。非配列要素に遭遇すると、現在通過しているレベルが返されます。例:function getArrayDepth($array){ $max_depth = 1; foreach($array as $value){ if(is_array($value)){ $depth = getArrayDepth($value) + 1; if($depth > $max_depth){ $max_depth = $depth; } } } return $max_depth; }
$array1 = [1, 2, 3]; $array2 = [1, [2, 3]]; $array3 = [1, [2, [3]]]; echo getArrayDepth($array1); // 输出1 echo getArrayDepth($array2); // 输出2 echo getArrayDepth($array3); // 输出3
2. array_filter 関数を使用する
PHP の array_filter 関数は、指定されたコールバック関数に従って配列内の要素をフィルターし、条件を満たす要素を返すことができます。 array_filter 関数を使用して、配列にネストされた配列があるかどうかを確認できます。function isMultiDimensional($array){ return (count($array) !== count($array, COUNT_RECURSIVE)); }
$array1 = [1, 2, 3]; $array2 = [1, [2, 3]]; $array3 = [1, [2, [3]]]; var_dump(isMultiDimensional($array1)); // 输出false var_dump(isMultiDimensional($array2)); // 输出true var_dump(isMultiDimensional($array3)); // 输出true
3. array_walk_recursive 関数を使用する
PHP の array_walk_recursive 関数は、配列内の各要素に対してユーザー定義関数を再帰的に呼び出すことができます。この機能を使用して、配列にネストされた配列があるかどうかを確認できます。function isMultiDimensional($array){ $result = false; $callback = function($value) use (&$result){ if(is_array($value)){ $result = true; } }; array_walk_recursive($array, $callback); return $result; }
$array1 = [1, 2, 3]; $array2 = [1, [2, 3]]; $array3 = [1, [2, [3]]]; var_dump(isMultiDimensional($array1)); // 输出false var_dump(isMultiDimensional($array2)); // 输出true var_dump(isMultiDimensional($array3)); // 输出true
以上がPHPで配列の次元を確認する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。