waste of time

主にPHP

PHP5.4から可能になった連想配列記法をPHP5.3.3で使ってエラー出てた話

昔作ったアプリケーションを久しぶりに動かしてみたらシンタックスエラーが出たので、ソースの該当箇所を見てみたら連想配列を以下のように指定していた。

$data = [
    'api_key' => $api_key,
    'limit'   => $limit,
    'offset'  => $offset
];

ばっちりとマニュアルに書いてあるけど、この指定方法はPHP5.4以降で可能となったものだ。

$ php -v
PHP 5.3.3 (cli) (built: Dec 11 2013 03:29:57)
Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies
    with eAccelerator v0.9.6.1, Copyright (c) 2004-2010 eAccelerator, by eAccelerator

案の定サーバのPHPバージョンは5.3.3。ということで以下のように従来方式で書き直したらエラーも消えました。

$data = array(
    'api_key' => $api_key,
    'limit'   => $limit,
    'offset'  => $offset
);

というか開発当時からVPSの環境は変えてないような気がするけど、昔は何故これで動いてたのかちょっと謎。