【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください

以下のコードの「echo fetch() ['id']」はうまくいく環境とそうでない環境があるようです。

<?php
function fetch(){
$date = array('id' => 'JO783', 'name' => 'Taro');
return $date;
}

echo fetch() ['id']; // JO783と表示されることを期待しています
?>

fetch()は連想配列を返すので、['id']を指定することで、JO783というidが取り出せると思いますが、localhostで開いた環境ではうまくいきますが、借りているレンタルサーバーでは
Parse error: syntax error, unexpected '[', expecting ',' or ';' in phptest/index.php on line 7
とエラーが出ます。

PDOのfetchをイメージして作っています。PDOで
$dbh->query($sql)->fetch()['id']みたいに、一気に値を取得したいです。

A 回答 (2件)

各環境のPHPのバージョンは?(この機能5.4からのサポート)



http://php.net/manual/en/language.types.array.ph …
> As of PHP 5.4 it is possible to array dereference the result of a function or method call directly. Before it was only possible using a temporary variable.
    • good
    • 0
この回答へのお礼

ありがとうございます!
バージョンの問題だったんですね。

お礼日時:2014/07/12 11:50

PDO::FETCH_OBJオプションを使う、またはfetchObjectメソッドを使うのも選択肢の一つですね。

これは5.3でも使えます。
http://qiita.com/mpyw/items/b00b72c5c95aac573b71 …

$dbh->query($sql)->fetchObject()->id
    • good
    • 0
この回答へのお礼

ありがとうございます。PDOの方にそういうメソッドがあるのは知りませんでした。便利ですね!

お礼日時:2014/07/13 11:20

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報