ここから本文です

PHPの「syntax error, unexpected T_FUNCTION in」について

all********さん

2013/11/3016:02:47

PHPの「syntax error, unexpected T_FUNCTION in」について

前回の質問で、あるコードを教えていただきました。
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1211720880...

自宅に立てているWebサーバでは、なんの問題もなく動作させることが出来ました。
しかし、レンタルサーバー上にて動作させると以下の様なエラーが
教えていただいたコードの箇所で発生します。
"Parse error: syntax error, unexpected T_FUNCTION in ~~~~~~"

これはPHPのバージョンの違いによるものなのでしょうか?
レンタルサーバ上では、PHP5.2, 5.3, 5.4しか選択できないため検証できませんでした。

どなたか解決方法を知っている方がいらっしゃいましたらご教授お願い致します。

ーーーーーーーーーーーーーーーーーーーーーー
教えていただいたコード
$people = array_filter(
____$people,
____function ($person) {
________static $names;
________$ret = !isset($_names[$person['name']]);
________$names[$person['name']] = true;
________return $ret;
____}
);

閲覧数:
5,474
回答数:
2
お礼:
100枚

違反報告

ベストアンサーに選ばれた回答

プロフィール画像

カテゴリマスター

mpywさん

編集あり2013/11/3018:55:03

関数を値のように扱う構文(無名関数・クロージャ)はPHP5.3以降専用です。
http://php.net/manual/ja/functions.anonymous.php

以前のソースコードに少し無駄があったのでさらに短くしてみました・・・w
http://qiita.com/mpyw/items/1044c94d1a7820b255a8

$people = array_filter(
____$people,
____function ($p) {
________static $h = array();
________return !isset($h[$p['name']]) and $h[$p['name']] = true;
____}
);

質問した人からのコメント

2013/12/1 01:28:13

降参 前回に引き続き、ご回答いただきましてありがとうございました。
レンタルサーバより<?php phpinfo(); ?>を実行し、バージョンを確認してみたところ5.2でした。
レンタルサーバでの設定は5.4になっているので、そこら辺に問題がありそうです。

短くなったコードも有り難く利用させていただきますm(_ _)m

ベストアンサー以外の回答

1〜1件/1件中

nic********さん

2013/11/3018:01:29

先頭のアンダーバーはスペースに置換。

その上で、PHP5.3以降が必須。
http://php.net/manual/ja/functions.anonymous.php

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる