Неожиданный ‘[‘ при использовании getimagesize ()

78 Я получил некоторый код, который раньше работал, но теперь выдает ошибку:

Ошибка разбора: синтаксическая ошибка, неожиданный ‘[‘ в (…) / utility_helper.php в строке 47

Я проверял, снова и снова, что все круглые скобки и подобные закрыты, и я не могу найти ничего, что выглядит неправильно. Функция, включающая строку 47, такова:

/*  image_ratio($img)
*  Returns one (1) if the image is landscape ratio (width > height) or reutrns
*  zero (0) otherwise
*/
function image_ratio($img) {
$imgWidth  = getimagesize($img)[0]; // <-- Line 47
$imgHeight = getimagesize($img)[1];

if ($imgWidth/$imgHeight > 1) {
return 1;
} else {
return 0;
}
}

Какого черта я делаю не так?

Обновить:

Изменена ссылка 47-48 на следующую (старая версия PHP не может обрабатывать вышеуказанный синтаксис):

$imgSize   = getimagesize($img);
$imgWidth  = $imgSize[0];
$imgHeight = $imgSize[1];

1

Решение

Как сказано в комментариях Бена, PHP < 5.4 не поддерживает разыменование массива из функции. Вы должны сделать это следующим образом или обновить версию PHP:

function image_ratio($img) {
$imgSize  = getimagesize($img); // <-- Line 47

$imgWidth = $imgSize[0];
$imgHeight = $imgSize[1];

if (($imgWidth/$imgHeight) > 1) {
return 1;
} else {
return 0;
}
}
2

Другие решения

Создайте массив, а затем сделайте переменные из массива следующим образом:

$imageSize = getimagesize($img);
$imgWidth  = $imageSize[0];
$imgHeight = $imageSize[1];
2

Для версий PHP < 5.4, ​​которые не поддерживают разыменование массива функций, которые вы можете использовать вместо список() назначить элементы массива (одиночным) переменным.

list($width, $height) = getimagesize('...');
1

Пытаться:

function image_ratio($img) {
$imgSize = getimagesize($img);
$imgWidth  = $imgSize[0];
$imgHeight = $imgSize[1];

if ($imgWidth/$imgHeight > 1) {
return 1;
} else {
return 0;
}
}
0
По вопросам рекламы [email protected]