【PHP】array_map関数のように多次元配列の要素にコールバック関数を適用する方法

【PHP】array_map関数のように多次元配列の要素にコールバック関数を適用する方法です。

配列の要素にコールバック関数を適用したいときarray_map関数がすごく便利なのですが、array_map関数は多次元配列には対応していません。

以下の様なコードはエラーとなります。

<?php
$array = ["a", ["b", "c"], "d"];

$array = array_map("strtoupper");

print_r($array);

多次元配列の要素にコールバック関数を適用したいとき、簡単に自作関数を作ることも出来ますが以下のようにfilter_var関数を使うのもおすすめです。

<?php
$array = ["a", ["b", "c"], "d"];

$array = filter_var($array, FILTER_CALLBACK, ["options" => function($value){
  return strtoupper($value);
}]);

print_r($array);

ちなみに自作関数を作った場合、以下の様なコードになると思います。

$array = ["a", ["b", "c"], "d"];

function my_strtoupper($array)
{
    if(is_array($array))
    {
        return array_map("my_strtoupper", $array);
    }

    return strtoupper($array);
}

$array = my_strtoupper($array);

print_r($array);

 

お気軽にコメントをどうぞ

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください