スポンサーリンク

PHPの配列で要素が存在しているかどうかチェックするのに、isset()関数を使ったり、array_key_exists()関数を使ってりします。

このPHPの関数たちは何が違うのでしょうか?

<?php
function check($array, $name) {
        $r = array_key_exists($name, $array);
        $i = isset($array[$name]);

        echo "$name:",PHP_EOL;
        echo "array_key_exists = ";
        var_dump($r);
        echo "isset = ";
        var_dump($i);
        echo PHP_EOL;
}

$a = array ('null'=>null, 'false' => false, 'hoge'=>'meta');

check($a, 'null');
check($a, 'false');
check($a, 'hoge');
?>

要素に対する値がnullのときにisset()はfalseを返しますが、array_key_exist()は、trueを返しています。

% php array_test.php
null:
array_key_exists = bool(true)
isset = bool(false)

false:
array_key_exists = bool(true)
isset = bool(true)

hoge:
array_key_exists = bool(true)
isset = bool(true)

つまり、isset()と使った場合とarray_key_exists()を使った場合のプログラムの挙動が変わってしまう場合が出てきます。というわけで、PHPのisset()を使うときは、注意して使ってください。
参照しているページ (サイト内): [2008-01-31-1]

スポンサーリンク
スポンサーリンク
 
いつもシェア、ありがとうございます!


もっと情報を探しませんか?

関連記事

最近の記事

人気のページ

はてなの人気のブックマーク

スポンサーリンク
 

過去ログ

2018 : 01 02 03 04 05 06 07 08 09 10 11 12
2017 : 01 02 03 04 05 06 07 08 09 10 11 12
2016 : 01 02 03 04 05 06 07 08 09 10 11 12
2015 : 01 02 03 04 05 06 07 08 09 10 11 12
2014 : 01 02 03 04 05 06 07 08 09 10 11 12
2013 : 01 02 03 04 05 06 07 08 09 10 11 12
2012 : 01 02 03 04 05 06 07 08 09 10 11 12
2011 : 01 02 03 04 05 06 07 08 09 10 11 12
2010 : 01 02 03 04 05 06 07 08 09 10 11 12
2009 : 01 02 03 04 05 06 07 08 09 10 11 12
2008 : 01 02 03 04 05 06 07 08 09 10 11 12
2007 : 01 02 03 04 05 06 07 08 09 10 11 12
2006 : 01 02 03 04 05 06 07 08 09 10 11 12
2005 : 01 02 03 04 05 06 07 08 09 10 11 12
2004 : 01 02 03 04 05 06 07 08 09 10 11 12
2003 : 01 02 03 04 05 06 07 08 09 10 11 12

サイト

Vim入門

C言語入門

C++入門

JavaScript/Node.js入門

Python入門

FreeBSD入門

Ubuntu入門

セキュリティ入門

パソコン自作入門

ブログ

トップ


プライバシーポリシー