通常、連想配列はキーを指定して値を取得すると思いますが、値からキーを取得したい場合もあると思います。
foreachを使用すればできますが、1行で行いたいという時もあると思います。
そんな時の方法を記します。
Contents
キーから値を取得する
キーから値を取得するには連想配列に対してキーを指定するだけでいいですね。
※キーがappleの値を取得したい時
<?php
$fruits_dictionary = array(
"apple" =>"リンゴ",
"grape" =>"ブドウ",
"orange"=>"オレンジ",
);
echo $fruits_dictionary["apple"]; //出力:リンゴ
値からキーを取得(foreachを使用する場合)
foreachを使用して下記のように値からキーを取得することができます。
※値がリンゴのキーを取得したい時
しかし、値からキーを取得するのに何行も書くのは嫌ですね。
$fruits_dictionary = array(
"apple" =>"リンゴ",
"grape" =>"ブドウ",
"orange"=>"オレンジ",
);
$result=false;
foreach($fruits_dictionary as $key => $val){
if($val == "リンゴ"){
$result = $key;
}
}
echo($result); //apple
値からキーを取得(array_searchを使用する場合)
値からキーを取得するのにforeachを使うのに納得いかなければ、array_searchを使用しましょう。
第一引数に検索したい文字列、第二引数に連想配列を入れます。
1行で取れて便利ですね!
$fruits_dictionary = array(
"apple" =>"リンゴ",
"grape" =>"ブドウ",
"orange"=>"オレンジ",
);
echo array_search("リンゴ",$fruits_dictionary); //apple
array_searchについて
値に対してキーが存在しない場合や、同じ値が二つある場合はどうなるの?という疑問があるかもしれません。
array_searchについてこの2点だけ補足させていただきます。
値に対してキーが存在しない場合
値に対してキーが存在しない場合はfalseが返ってきます。
$fruits_dictionary = array(
"apple" =>"リンゴ",
"grape" =>"ブドウ",
"orange"=>"オレンジ",
);
echo array_search("イチゴ",$fruits_dictionary); //false
同じ値が二つ以上ある場合
array_searchでは同じ値が二つ以上ある場合、最初に見つかったキーを返します。
なので、基本的には辞書のように値が一意の連想配列に対して、有効かと思います。
※同じ値が複数ありキーを取得したい場合はarray_keys関数が有効かとおもいます。
$age_array = array(
"taro" => 14,
"jiro" => 15,
"yuko" => 20,
"hanako"=> 14,
);
echo array_search(14,$age_array); //taro (一番最初に見つかったキーが返る
参考:https://www.php.net/manual/ja/function.array-search.php
以上、PHPで連想配列の値からキーを取得する方法でした!
コメント