株式会社プロネット

 

WEBシステム開発、ITコンサルティング、自社サービス、教育事業 - これからのビジネスへのIT活用ソリューションをご提案致します。

【PHP】複数ファイルアップロード時の配列を整形する

2015.12.17(Thu) 18:31 | PHP | oshima

こんばんは。
PHPでファイルのアップロード関係の処理を書いていたのときなのですが、
どうにもPHP側で扱う配列の形式が扱い辛いので綺麗に変換しました。
そのときの方法です。

環境

PHP 5.5.9

デフォルト配列

通常複数ファイルをアップロードした際のパラメータは以下のような配列になります。
キーごとに配列になっちゃうんですね。

Array
(
    [name] => Array
        (
            [0] => foo.txt
            [1] => bar.txt
        )
 
    [type] => Array
        (
            [0] => text/plain
            [1] => text/plain
        )
 
    [tmp_name] => Array
        (
            [0] => /tmp/phpYzdqkD
            [1] => /tmp/phpeEwEWG
        )
 
    [error] => Array
        (
            [0] => 0
            [1] => 0
        )
 
    [size] => Array
        (
            [0] => 123
            [1] => 456
        )
)

これでもまあいいのですが、
あまり美しくないので↓の綺麗な配列に変換します。

Array
(
    [0] => Array
        (
            [name] => foo.txt
            [type] => text/plain
            [tmp_name] => /tmp/phpYzdqkD
            [error] => 0
            [size] => 123
        )
 
    [1] => Array
        (
            [name] => bar.txt
            [type] => text/plain
            [tmp_name] => /tmp/phpeEwEWG
            [error] => 0
            [size] => 456
        )
)

方法

変換用ファンクションがこちら。

function rearrangeFiles($arr) {
    foreach ($arr as $key => $all) {
        foreach ($all as $i => $val) {
            $new[$i][$key] = $val;
        }
    }
    return $new;
}

使い方。

$newFileArr = $this->rearrangeFiles($fileArr);