使用 getimagesize() 时意外的“[”

Unexpected '[' when using getimagesize()

78我得到了一些代码,以前可以用,但现在出现错误:

解析错误:语法错误,意外的'[' in (...)/utility_helper.php on line 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;
    }
}

我到底做错了什么?

更新:

将 link 47-48 更改为以下内容(旧 PHP 版本无法处理上述语法):

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

正如 Ben 在评论中所说,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() 将数组元素分配给(单个)变量。

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;
    }
}