2015-01-09 1 views
1

78I получил некоторый код, который используется для работы, но теперь проходит ошибку:Неожиданное «[» при использовании getimagesize()

Синтаксическая ошибка: синтаксическая ошибка, неожиданный «[» в (...)/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; 
    } 
} 

Что, черт возьми, я делаю неправильно?

Update:

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

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

Какая версия PHP вы используете? Этот синтаксис поддерживается только в PHP 5.4 и новее. – Carpetsmoker

+1

PHP <5.4 не поддерживает разыменование массива из функции return. Либо обновите свою версию PHP, либо присвойте 'getimagesize ($ img)' переменной и обратитесь к массиву оттуда. –

+1

попробуйте сделать $ img массив сначала, так как $ array = $ img, затем getimagesize ($ array [0]); – Neat

ответ

2

Как сказано в комментариях Бен, 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; 
    } 
} 
+1

Это вернет одинаковое число для ширины и высоты ... –

+1

Спасибо за исправление, я был слишком быстр – Peter

+0

Спасибо, я понял, даже с опечатками :-) – Noceo

2

Сделать массив, а затем сделать переменные из массива, как это:

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

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

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

Try:

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

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