0

私は次の配列を持っています:

Array ( 
   [0] => Information.pdf
   [1] => Presentation.pdf
   [2] => Brochure.pdf
) 

これをPHPを使用して次の形式のネストされた配列に変換し、CakePHP2.1.1電子メールクラスと互換性を持たせたいと思います。

Array (  
   [Information.pdf] => Array ( 
        [file] => /files/Information.pdf 
        [mimetype] => application/pdf  
   ) 
   [Presentation.pdf] => Array ( 
        [file] => /files/Presentation.pdf 
        [mimetype] => application/pdf  
   ) 
   [Brochure.pdf] => Array ( 
        [file] => /files/Brochure.pdf 
        [mimetype] => application/pdf  
   ) 
)

これを行う方法についてのアイデアはありますか?「mimetype」はハードコーディングできます。

4

4 に答える 4

5
$nested = array();
foreach($flat as $filename) {
    $nested[$filename] = array(
        'file' => '/files/'.$filename,
        'mimetype' => 'application/pdf'
    );
};

mimetypeを推測するには、fileinfo拡張子が適しています。

于 2012-04-30T07:48:21.877 に答える
1

を使用しforeachて配列アイテムを反復処理し、を使用mime_content_type()してmimetypeを取得します。

$temp = array(); //A temporary array to store new array
foreach($array as $filename) { //Supposing $array is your original array
    $file = '/files/'.$filename;
    $temp[$filename] = array(
        'file' => $file,
        'mimetype' => mime_content_type($file)
    );
};
于 2012-04-30T07:51:29.223 に答える
0
$newArr = array();
foreach($arr as $val) {
    $newArr[$val] = array(
        "file"      =>  "/files/".$val,
        "mimetype"  =>  "application/pdf"
    );
}
于 2012-04-30T07:49:09.910 に答える
0
<?php
$arr = array('Information.pdf','Presentation.pdf','Brochure.pdf'); //current array
$new_arr = array();
foreach($arr as $key=>$value){
    $val = explode(".",$value);
    $new_arr[$value]=array('file'=>"/files/".$value,'mimetype'=>"application/".$value[1]);
}
?>
于 2012-04-30T07:54:09.970 に答える