如何将getimagesize()结果转换为变量?

时间:2014-05-09 10:43:12

标签: php arrays variables getimagesize

是否有一个函数可以将getimagesize()的所有结果作为关联数组或带有自解释名称的单个变量返回给我?我知道我可以用foreach循环来做,但必须有更好的方法。

var_dump(getimagesize('foo.png'));的结果:

array
  0 => int 500
  1 => int 250
  2 => int 3
  3 => string 'width="500" height="250"' (length=24)
  'bits' => int 8
  'mime' => string 'image/png' (length=9)

列表()

函数list因其行为而无效:

  

注意:list()仅适用于数值数组并采用数字   指数从0开始。

提取物()

如果您使用前缀,则函数extract可以正常工作:

  

请注意,仅当flags为EXTR_PREFIX_SAME时才需要前缀,   EXTR_PREFIX_ALL,EXTR_PREFIX_INVALID或EXTR_PREFIX_IF_EXISTS。如果   前缀结果不是有效的变量名,不会导入   符号表。前缀自动与数组分开   用下划线字符键。

但是你会有<prefix>_0<prefix>_1等变量。这不是自我解释。

1 个答案:

答案 0 :(得分:2)

我发现的唯一方法是使用array_values()获取纯数字索引数组并将其与list()一起使用。

单个变量的解决方案:

list(
      $width, 
      $height, 
      $mimeType, 
      $htmlAttr, 
      $bits, 
      $mime
) = array_values(getimagesize('foo.png'));

关联数组的解决方案:

list(
     $imgInfo['width'], 
     $imgInfo['height'], 
     $imgInfo['mimeType'], 
     $imgInfo['htmlAttr'], 
     $imgInfo['bits'], 
     $imgInfo['mime']
) = array_values(getimagesize('foo.png'));