PHPで連想配列の値からキーを取得(1行でOK)


通常、連想配列はキーを指定してを取得すると思いますが、からキーを取得したい場合もあると思います。
foreachを使用すればできますが、1行で行いたいという時もあると思います。
そんな時の方法を記します。



キーから値を取得する

キーから値を取得するには連想配列に対してキーを指定するだけでいいですね。
※キーが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





connaiconnai

値からキーを取得(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で連想配列の値からキーを取得する方法でした!

コメント

タイトルとURLをコピーしました