配列の順番を変えずに値を変える[PHP]

配列の順番を変えずに、値を変えたい場合があります

下記のような配列があります

print_r($arr);
/*
Array
(
    [0] => red
    [1] => light_green
    [2] => deep_blue
    [3] => pink
    [4] => white
)
*/

これをこのような配列にしたいとします

print_r($arr);
/*
Array
(
    [0] => red
    [1] => green
    [2] => blue
    [3] => pink
    [4] => black
)
*/

これを解決するために2つの関数をつかいます

$arr = array("red", "light_green", "deep_blue", "pink", "white");

$replacements = array(
                    array_search("light_green", $arr) => "green",
                    array_search("deep_blue", $arr) => "blue",
                    array_search("white", $arr) => "black"
                );

$arr_replace = array_replace($arr, $replacements);

print_r($arr_replace);
/*
Array
(
    [0] => red
    [1] => green
    [2] => blue
    [3] => pink
    [4] => black
)
*/
  • array_search()
    hogeがvalueのとき、添字のkeyを取得できます

  • array_replace()
    valueを別の値に変えられます
    配列の順番(添字)を変えたくないときに重宝します

これらを組み合わせると添字配列のvalueを別の値にできます