2013-07-26 2 views
-1

나는 폴더 내에서 주어진 확장자의 파일을 나열하는 클래스를 만들고 있습니다.foreach가있는 PHP 배열 건물

내가 겪고있는 문제는 일부 파일은 이미지이고 그 파일에서 더 많은 정보를 추출하고 이미지가 아닌 파일은 추출하지 않기를 원합니다.

배열에 항목을 추가하는 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] [ 'info']. 두 번째 색인은 파일에 대해 하나의 정보 만있을 수 있으므로 쓸모가 없습니다.

이 문제를 해결하는 방법은 무엇입니까?

답변

0

작동합니다 :

'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() 
    ); 

이것은 당신의 info 키 주위에 배열을 추가하지 않는 그런

+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 
    );