Как преобразовать результат 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 и так далее. Это не объясняет.


person Jurik    schedule 09.05.2014    source источник


Ответы (1)


Я нашел единственный способ - использовать 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'));
person Jurik    schedule 09.05.2014