今回はPHPのプログラムを組んでいて、 関数array_keysを利用して配列のキーの中に、指定されたキーの存在チェックを行う為に 使っていたのですが、指定されたキーが無かった場合はどうなるのかなと思い、調べてみました。
PHPの公式のマニアルには以下の様な例が載っています。
1 2 3 4 5 6 7 8 9 10 11 | <?php $array = array (0 => 100, "color" => "red" ); print_r( array_keys ( $array )); $array = array ( "blue" , "red" , "green" , "blue" , "blue" ); print_r( array_keys ( $array , "blue" )); $array = array ( "color" => array ( "blue" , "red" , "green" ), "size" => array ( "small" , "medium" , "large" )); print_r( array_keys ( $array )); ?> |
これを実行すると以下の様になります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | Array ( [0] => 0 [1] => color ) Array ( [0] => 0 [1] => 3 [2] => 4 ) Array ( [0] => color [1] => size ) |
確かにこれで例としては問題無いのですが、結果としてキー値が返るものしか載っていません。 まあ、該当しないキー値を指定した場合は自分で調べればいいのですが。 そこで、2番目の例で、キーが存在しない yellow でやってみました。
1 2 3 4 | <?php $array = array ( "blue" , "red" , "green" , "blue" , "blue" ); print_r( array_keys ( $array , "yellow" )); ?> |
この結果は、以下の様になります。
1 2 3 | Array ( ) |
結果としては、空のarrayが返ります。 この結果に対して、count()を取ってやれば、0となります。 また、foreachで処理しても結果の配列は空なので、以下の様に処理されないことになります。
1 2 3 4 5 6 7 8 9 10 11 12 | <?php $array = array ( "blue" , "red" , "green" , "blue" , "blue" ); /* array_keys:配列内にデータが存在 */ foreach ( array_keys ( $array , "blue" ) as $arrValue ) { echo "KEY=" . $arrValue . "\n" ; } /* array_keys:空の配列が返る */ foreach ( array_keys ( $array , "yellow" ) as $arrValue ) { echo "KEY=" . $arrValue . "\n" ; } ?> |
PHPのマニアルも空の配列の例が載っていると助かるのですが・・・
ショッピングサイト一通りを最初から自分で作ってみることで、PHPでのシステム開発を学べる入門書です。
コメント