explodeの使い方ではまった。


Parse error: syntax error, unexpected ‘[‘ in [phpファイル名] on line [行数]

explode1行既存のコードに追加したところエラーが出た。
あーん?パースエラーのシンタックスエラーなんて、どうせクォート書き忘れたとかなんか書き間違えたんだろうと。1文・1文字ずつ見直すが思い通りのコードになってる。
??意味わからん。

$filename = explode("<>" , $filename )[0];

どこを間違うっていうんだ?

てサンプルコード作って動かしたら動いちゃう。ますます悩んで??あれこれ悩んだ末…
で結論。

サンプルコード動かすphpディレクトリのphp5.4のバージョン
本番実行するファイルをphp5.3で動かしてました。

どうもphp5.3ではexplodeの返り値配列をつづけてexplode(…)[0];みたいにいじったら駄目みたい。
下記、5.4で普通に書くコードと、5.3でも動くバージョン
単に一回配列変数に落とし込んでるだけなんだけど。

//php5.4で動くコード
$source_str=";lkj;ljasd;fjas;lkjg;alskj;glaksj";
$ary = explode("asd",$source_str);
$output = explode("asd",$source_str)[0];  //←ここで5.3では動かない
print "output=".$output;
print_r($ary);
print "<br />------------------<br />\n";

//php5.3でも動くコード
$source_str=";lkj;ljasd;fjas;lkjg;alskj;glaksj";
$ary = explode("asd",$source_str);
$aryoutput = explode("asd",$source_str);  //←変更
$output = $aryoutput[0];                  //←変更
print "output=".$output;
print_r($ary);
print "<br />------------------<br />\n";

追記:
$output = reset(explode("asd",$source_str));
これは1行でいけるんだな。分割した文字列の最初の要素を取り出す時にしか使えないけど。
最後の要素はrest→end()に変更でいける。
ま、普通最初の要素取り出す時にしかこんなexplode(…)[0]みたいな書き方しないよね。ならresetでいいかと。
もし詳しく配列内部を読み倒して処理するなら普通に配列に一旦放り込むしね。

コメントを残す

メールアドレスが公開されることはありません。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)