2013-07-26 98 views
-1

我正在做一個類,列出文件夾中給定擴展名的文件。php數組建立與foreach

我遇到的麻煩是某些文件是圖像,我想從這些文件中提取更多信息,而不是用於不是圖像的文件。

我創建了這個向數組添加條目的foreach。後來該數組是returnd,包含的所有文件:

$file_array[] = array(
    "basename"=>$file->getBasename(), 
    "size"=>$file->getSize(), //in bytes 
    "extension"=>$extension, 
    "file"=>$filename, 
    "path"=>$file->getPath(), 
    in_array(strtolower($extension), array("jpg","jpeg","png","gif")) ? array("info"=>getimagesize($filename)) : null 
    ); 

正如我剛纔所說,這個作品。 ,我想糾正問題是輸出:

Array 
(
    [0] => Array 
     (
      [basename] => 1.JPG 
      [size] => 56533 
      [extension] => jpg 
      [file] => folder\1.JPG 
      [path] => folder 
      [0] => Array 
       (
        [info] => Array 
         (
          [0] => 897 
          [1] => 616 
          [2] => 2 
          [3] => width="897" height="616" 
          [bits] => 8 
          [channels] => 3 
          [mime] => image/jpeg 
         ) 

       ) 

     ) 

    [1] => Array 
     (
      [basename] => 2.JPG 
      [size] => 56533 
      [extension] => jpg 
      [file] => folder\2.JPG 
      [path] => folder 
      [0] => Array 
       (
        [info] => Array 
         (
          [0] => 897 
          [1] => 616 
          [2] => 2 
          [3] => width="897" height="616" 
          [bits] => 8 
          [channels] => 3 
          [mime] => image/jpeg 
         ) 

       ) 

     ) 
) 

我要更正的問題是,我想訪問像$ file_array [0] [「信息」]而不是$ file_array [文件信息0] [0] [ '信息']。第二個索引是無用的,因爲文件只能有一個信息。

有什麼辦法可以解決這個問題?

回答

0

然後不加在你info鍵的數組:

'info' => in_array(...) ? getimagesize($filename) : null 
0
$file_array[] = array(
    "basename"=>$file->getBasename(), 
    "size"=>$file->getSize(), //in bytes 
    "extension"=>$extension, 
    "file"=>$filename, 
    "path"=>$file->getPath(), 
    "info" => in_array(strtolower($extension), array("jpg","jpeg","png","gif")) ? getimagesize($filename) : array() 
    ); 

這應該工作

+0

太簡單了! 我想我沒有遵循這個邏輯,因爲如果不需要的話,我想試着將[信息]保留在數組之外。 – user2599347

0

你的密鑰是不正確的。嘗試這個。請注意,我已將信息添加爲設置條件值的索引。

$file_array[] = array(
    "basename"=>$file->getBasename(), 
    "size"=>$file->getSize(), //in bytes 
    "extension"=>$extension, 
    "file"=>$filename, 
    "path"=>$file->getPath(), 
    'info' => in_array(strtolower($extension), array("jpg","jpeg","png","gif")) ? getimagesize($filename) : null 
    );