1

配列が未定義かどうかを確認するにはどうすればよいですか?私は使用issetしてemptyいますが、両方とも未定義の配列に対して機能していません。

これは私のコードです:

if (isset($content['menu']['main'])){
    echo 'there is menu';               
}
4

3 に答える 3

4

Rikeshmimipcによって指定されたこのコードを使用してください

$arr = array("menu"=>array("main"=>1));
if (is_array($arr) && array_key_exists('menu', $arr)) {
     echo "array";
}

実例http://codepad.viper-7.com/Q3gTwn

于 2013-02-15T10:02:28.867 に答える
3

あなたのコードに基づいて、あなたは関数array_key_exists()を探していると思います。

$content = array('menu'=>array());
echo isset($content);
>>> 1
echo array_key_exists('menu', $content);
>>> 1
if ( array_key_exists('main', $content['menu']) ) {
    echo "Main menu exists";
} else {
    echo "Main menu does not exist";
}
>>> Main menu does not exist

isset()変数$contentが設定されているため機能しません。また、配列が空でない可能性があるため、機能しempty()ません。mainキーが$content['menu']配列に存在するかどうかを確認する必要があります。

于 2013-02-15T10:07:41.013 に答える
2

配列要素が存在するかどうかは、次のコマンドで確認できますin_array

in_array('one', array('two', 'three', 'four')); // false

そして、あなたは配列インデックスをチェックすることができますarray_key_exists

array_key_exists('metallica', array('metallica' => 'worst than megadeth')); // true

このisset関数を使用すると、配列または変数が等しくないかどうか、ブール値またはNULLと解釈できる値が含まれているかどうか、および変数値(または配列キー/インデックス/要素)が等しいかどうかを確認するだけです。 。TrueFalse0NULL

私は通常、変数が:is_nullで設定されているかどうかを確認します。これを使用して、配列インデックスまたは要素が同じ配列内に定義されているかどうかを確認できます。

編集:

変数が次の配列である(sizeof($something) > 0)か、または次is_arrayの関数で配列されているかを確認することもできます。

于 2013-02-15T10:00:38.840 に答える