PHP で配列内の指定された値を見つけるにはさまざまな方法があります。以下では、PHP での配列検索関数 in_array()、array_key_exists()、および array_search() の使用法を紹介します。配列には、上記の 3 つの方法があります:
in_array '関数は配列内の指定された値を検索します。 in_array(value,array,type)type オプション。このパラメータを true に設定すると、検索されたデータの型と配列の値が同じであるかどうかがチェックされます。
array_key_exists 'array_key_exists() 関数は、指定されたキーが配列内に存在するかどうかを判断し、キーが存在する場合は true を返し、存在しない場合は false を返します。 array_key_exists(キー,配列)
例1 array_key_exists() の例
コードをコピー | |
$search_array = array('first' => 1, ' Second' => 4); if (array_key_exists('first', $search_array)) { echo "「最初の」要素は配列内にあります"; } ?> |
isset() は配列内の NULL 値に対して TRUE を返しませんが、array_key_exists() は返します。
コードをコピー | |
$search_array = array('first' => null, 'second' => 4); // false を返します
isset($search_array['first']);
array_key_exists('first', $search_array); |
最初のパラメータは検索する値、2 番目のパラメータは配列、最後のパラメータは検索時にデータ型が同じかどうかをチェックするかどうかを参照します。
コードをコピー | |
$a=array("a"=>"犬","b"=>"猫","c"=>"馬"); echo array_search("犬",$a); ?> $a=array("a"=>"5","b"=>5,"c"=>"5"); echo array_search(5,$a,true); ?> 上記のコードは次の結果を出力します: ば |
もちろん、計算によれば、array_key_exists が占有するメモリは比較的大きくなります
。
配列構造は次のとおりです: array(1, 2, 3, ..) および array(1 => true, 2 => false, ..)
メモリ使用率は 1:2;
注: array_key_exist は in_array よりも 10 倍、さらには数十倍効率的です
シンプルなアルゴリズム
次のように、配列には 1000 個の要素があり、キー値は 1000000 未満の順序のない正の整数であり、連続していないと仮定します
$arr = array(1 => 'sadas', 20 => 'aasd', 5002 => 'fghfg', 190023 => 'rty', 248 => 'kj', 76 => 'sddd' ,...);
ここで、配列 $arr のキー値が 500 より大きく 600 未満である要素を取得したいと考えています。foreach を使用せずに完全にループするより効率的なアルゴリズムはありますか?
答え
コードをコピー | |
$result = array();
for($i = 501; $i
If(!isset($arr[$i])) 続行; |