ホームページ > バックエンド開発 > PHPの問題 > PHPで二次元配列かどうかを判断する方法

PHPで二次元配列かどうかを判断する方法

王林
リリース: 2023-05-07 14:17:09
オリジナル
642 人が閲覧しました

PHP は、Web 開発で広く使用されているサーバー側で解釈されるスクリプト言語であり、Web 開発におけるアプリケーションも、Web サイト開発、システム開発など、非常に広範囲にわたっています。配列は PHP で非常に一般的に使用されるデータ型であり、2 次元配列はさらに一般的なデータ型です。では、配列が 2 次元配列であるかどうかをどのように判断するのでしょうか?この記事では、この質問に答えます。

まず最初に、PHP の配列の概念を理解して復習しましょう。配列は、単一の変数名で複数の値を格納できる順序付きリストです。 PHP には、一般配列と連想配列という 2 種類の配列があります。一般に、配列は配列のキーとして数値を使用して要素を保存しますが、連想配列はカスタム キー名を使用して要素を保存します。例:

//定义一般数组
$num = array(1,2,3,4,5);
//定义关联数组
$user = array("name"=>"Tom","age"=>20,"gender"=>"male");
ログイン後にコピー

次に、私たちが注目するのは 2 次元配列です。 2 次元配列とは、複数の配列を含む配列を指し、サブ配列とも呼ばれます。各サブ配列には、独自の値をいくつか含めることができます。 PHP では、2 次元配列は次の方法で定義できます。

//使用array表示法初始化二维数组
$users = array(
              array("name"=>"Tom","age"=>20,"gender"=>"male"),
              array("name"=>"Lucy","age"=>22,"gender"=>"female"),
              array("name"=>"Jack","age"=>18,"gender"=>"male")
          );

//使用简单的方式初始化
$users[0] = array("name"=>"Tom","age"=>20,"gender"=>"male");
$users[1] = array("name"=>"Lucy","age"=>22,"gender"=>"female");
$users[2] = array("name"=>"Jack","age"=>18,"gender"=>"male");

//使用普通数组定义二维数组
$users = array(
              ["name"=>"Tom","age"=>20,"gender"=>"male"],
              ["name"=>"Lucy","age"=>22,"gender"=>"female"],
              ["name"=>"Jack","age"=>18,"gender"=>"male"]
          );
ログイン後にコピー

次に、配列が 2 次元配列であるかどうかを判断する方法について説明します。著者は、一般的な方法が 2 つあると考えています。

方法 1: is_array() 関数と count() 関数を使用する

is_array() 関数は、変数が存在するかどうかを検出するために使用できます。は配列です。返される場合は false ではなく true が返されます。 count() 関数を使用すると、配列内の要素の数をカウントできます。これら 2 つの関数の特性を利用して、まず is_array() 関数を使用して配列が配列であるかどうかを判断し、配列である場合は count() 関数を使用して配列に複数の配列が含まれているかどうかを判断します。 array は 2 つの配列です。次のような次元配列:

function is_two_dimen_array($arr){
    //判断是否为数组
    if(is_array($arr)){
        foreach($arr as $v){
            if(!is_array($v)){
                //如果数组中每个元素不是数组
                return false;
            }
        }
        //如果每个元素都是数组,返回真
        return true; 
    }
    //如果不是数组,返回假
    return false;
}

//测试
$array = array(array(1,2),array(3,4));
var_dump(is_two_dimen_array($array)); //输出bool(true)
ログイン後にコピー

上記のコードでは、まず is_array() 関数を使用して、配列が配列であるかどうかを判断します。配列である場合は、要素を走査します。配列内で is_array() 関数を使用して各要素を決定します。配列かどうかは、各要素が配列の場合は true を返し、それ以外の場合は false を返します。

方法 2: array_filter() 関数と array_map() 関数を使用する

array_filter() 関数を使用すると、特定の条件を満たす配列内の要素をフィルターし、以下で構成される新しい配列を返すことができます。これらの要素。 array_map() 関数は、配列内の各要素にコールバック関数を適用し、新しい配列を返すことができます。これら 2 つの関数は、多次元配列を簡単に操作できます。具体的な実装は次のとおりです。

/**
 * 判断是否为二维数组
 * @param $arr 待判断的数组
 * @return bool
 */
function is_two_dimen_array($arr){
    //筛选该数组中元素不是数组的元素
    $result = array_filter($arr,"is_array");
    //对筛选出的元素应用array_filter()函数,判断是否还存在不是数组的元素
    $result = array_map("is_array",$result);
    //如果存在该数组中的元素不是数组,返回false,否则返回true
    return !(bool)array_sum($result);
}

//测试
$array = array(array(1,2),array(3,4));
var_dump(is_two_dimen_array($array)); //输出bool(true)
ログイン後にコピー

上記のコードでは、まず array_filter() 関数を使用して配列をフィルタリングし、 is_array() 関数の条件を満たすすべての配列要素を残し、次に次を使用します。 array_map() 関数を使用して配列をフィルタリングします。判定が行われ、配列ではない要素がある場合、結果セット内の対応する要素は false になり、それ以外の場合は true になります。最後に、array_sum() 関数を使用して結果セットを追加します。結果が 0 に等しい場合は true を返し、それ以外の場合は false を返します。

要約すると、上記の 2 つの方法により、配列が 2 次元配列であるかどうかを簡単に判断できます。実際の開発では、状況に応じて適切な方法を選択して使用できます。

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート