2012-04-30 12 views
0

私は次の配列を持っている:配列の構造を変換

Array ( 
    [0] => Information.pdf 
    [1] => Presentation.pdf 
    [2] => Brochure.pdf 
) 
私は、CakePHP 2.1.1電子メールのクラスと互換性を持たせるためにPHPを使用して、次の形式でネストされた配列に変換したい

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"はハードコーディングできます。

答えて

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

mimetypeの推測では、fileinfo extensionが適しています。

+0

おかげで、それは私が望んでいたまさにそれです! – Joseph

0
$newArr = array(); 
foreach($arr as $val) { 
    $newArr[$val] = array(
     "file"  => "/files/".$val, 
     "mimetype" => "application/pdf" 
    ); 
} 
1

配列項目を反復処理し、MIMEタイプを取得するためにmime_content_type()を使用するforeachを使用してください。

$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) 
    ); 
}; 
+1

私はちょうどその反応をしていました。 –

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]); 
} 
?>