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];
Как сказано в комментариях Бена, 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;
}
}
Создайте массив, а затем сделайте переменные из массива следующим образом:
$imageSize = getimagesize($img);
$imgWidth = $imageSize[0];
$imgHeight = $imageSize[1];
Для версий PHP < 5.4, которые не поддерживают разыменование массива функций, которые вы можете использовать вместо список() назначить элементы массива (одиночным) переменным.
list($width, $height) = getimagesize('...');
Пытаться:
function image_ratio($img) {
$imgSize = getimagesize($img);
$imgWidth = $imgSize[0];
$imgHeight = $imgSize[1];
if ($imgWidth/$imgHeight > 1) {
return 1;
} else {
return 0;
}
}