2013-07-26 4 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

так просто! Думаю, я не следовал этой логике, потому что я хотел попытаться сохранить [info] из массива, если не нужно. – 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 
    ); 
Смежные вопросы