2012-01-11 6 views
23

可能性の重複:
PHP syntax for dereferencing function resultPHPを呼び出して最初の要素にアクセスしてアクセスしますか?

私は1234#5678のように見える文字列を、持っています。今私はこれを呼んでいる:

$last = explode("#", "1234#5678")[1] 

それは機能しない、いくつかの構文エラーがあります...しかしどこですか?私が期待するのは$lastの5678です。これはPHPでは動作しませんか?

+3

これはPHPでは不可能です。 –

+4

PHP 5.4ではこれを行うことができますが、現時点では5.3 –

答えて

26

アレイは現在のPHPのバージョン(残念ながら)は不可能です。しかし、あなたは直接変数に配列要素を割り当てるためにlist[docs]を使用することができます。

list($first, $last) = explode("#", "1234#5678"); 

UPDATE

PHP 5.4は(01日 - 3月 - 2012年リリース)以降ではarray dereferencingをサポートしています。

+3

そして多くの値が文字列にあれば、 $ last = end(explode( '#'、$ string)); –

+0

リストの代わりに 'list(、$ last)= ....'があります。その後、必要のないときに最初の変数がハングすることはありません。 –

8

ほとんどの場合、PHPは構文によって混乱している可能性があります。ただ、配列変数へexplodeの結果を代入し、それにインデックスを使用します。

$arr = explode("#", "1234#5678"); 
$last = $arr[1]; 
+1

ではありません。 – EOB

+0

スナップ!あなたが勝つ:) –

3

PHPは少し薄暗いことができます。おそらく、2行にこれを実行する必要がありますデリファレンス

$a = explode("#", "1234#5678"); 
$last = $a[1]; 
5

あなたはこれを行うことはできません。explodeは機能ではなく、配列で

explode("#", "1234#5678")[1] 

ので。配列を返しますが、PHPでは配列に設定されるまで関数を配列として扱うことはできません。

これはそれを行う方法です:

$last = explode('#', '1234#5678'); 
$last = $last[1]; 
6

は、ここに1つの行にそれを取得する方法は次のとおりです。

indxはあなたに、あなたは配列にしたい指標である

$last = current(array_slice(explode("#", "1234#5678"), indx,1));

例は1でした。

関連する問題