前回の記事「PHP配列学習:配列要素を横断するには?」 「4 つのメソッドの簡単な分析 」では、配列を走査する 4 つのメソッドを紹介しました。今回は配列要素のキー名とキー値に注目し、指定したキー名/値がPHP配列に存在するかどうかを確認する方法を紹介します。
まず、「キー名が配列内にあるかどうかを検出する方法」を見てみましょう。 実際には、これは非常に簡単で、組み込み関数 array_key_exists() を使用して検出できます。
array_key_exists() 関数は、指定されたキー名 (またはインデックス) が配列内に存在するかどうかを確認できます。この関数は、キー名と配列をそれぞれ指定するために使用される 2 つのパラメーター $key と $array を受け取ります。キー名 $key が配列 $array に存在する場合は true を返し、存在しない場合は false を返します。
コード例を見て詳しく見てみましょう。
<?php header("Content-type:text/html;charset=utf-8"); $array= array("姓名"=>"张三","年龄"=>25,"性别"=>"男"); var_dump($array); $key = '年龄'; if( array_key_exists($key, $array) ){ //检测数组中是否存在该键 echo "键名 '$key' 存在于数组中!"; } ?>
出力結果:
isset() 関数と array_key_exists() 関数の主な違い:
array_key_exists() 関数はキーが配列内に存在するかどうかを明示的に示しますが、 isset() はキー/変数が存在し、null でない場合にのみ true を返します。また、isset() は配列/変数が存在しない場合でもエラーを表示しませんが、array_key_exists() はエラーを表示します。
次に見てみましょうキー値が配列内にあるかどうかを検出する方法これも簡単です。組み込み関数 in_array() を使用して検出できます。指定された配列で指定された値が見つかった場合は TRUE を返し、そうでない場合は FALSE を返します。
in_array($value,$array,$type)
指定した配列に指定した値が存在するかどうかを確認できます $array
$value
; $type
パラメータは省略できます。
コード例を見て詳しく見てみましょう。
<?php header("Content-type:text/html;charset=utf-8"); $array= array("姓名"=>"张三","年龄"=>25,"性别"=>"男"); var_dump($array); $value = '张三'; if( in_array($value, $array) ){ //检测数组中是否存在该键名 echo "键名 '$value' 存在于数组中!"; } ?>
出力結果:
in_array() 関数の 3 番目のパラメータ $type
は省略されていますが、設定されている場合は、 value が true の場合、検索されたデータの型と配列の値が同じであるかどうかがチェックされます。この時点で、関数は要素が配列内に存在し、指定された値と同じデータ型を持つ場合にのみ true を返します。
<?php header("Content-type:text/html;charset=utf-8"); $array= array("姓名"=>"张三","年龄"=>25,"性别"=>"男"); var_dump($array); $value = "25"; if( in_array($value, $array,true) ){ //检测数组中是否存在该键名 echo "键名 '$value' 存在于数组中!"; }else{ echo "键名 '$value' 不存在于数组中!"; } echo "<br>"; $value = 25; if( in_array($value, $array,true) ){ //检测数组中是否存在该键名 echo "键名 $value 存在于数组中!"; }else{ echo "键名 '$value' 不存在于数组中!"; } ?>
出力結果:
$value
パラメータが文字列で、$type## の場合# パラメータ 大文字と小文字を区別して検索するには true に設定します。
推奨: PHP 面接の質問の要約 (コレクション)>>
以上が指定されたキー名/値があるかどうかを確認する方法を学習する PHP 配列の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。