web-dev-qa-db-ja.com

PHPを呼び出して、爆発して最初の要素にアクセスしますか?

可能性のある複製:
関数結果を逆参照するためのPHP構文

1234#5678のような文字列があります。今私はこれを呼んでいます:

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

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

25
EOB

現在のPHPバージョンでは残念ながら配列の逆参照はできません。) listを使用できます[ドキュメント] 配列要素を変数に直接割り当てるには:

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

[〜#〜]更新[〜#〜]

PHP 5.4(2012年3月1日リリース)なので、 配列の逆参照 をサポートしています。

33
Felix Kling

おそらくPHPは構文によって混乱しています。explodeの結果を配列変数に代入し、それに対してインデックスを使用してください:

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

これを1行にする方法は次のとおりです。

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

ここで、indxは配列に含めるインデックスで、例では1でした。

7
ragamufin

あなたはこれを行うことができません:

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

explodeは関数であり、配列ではないためです。確かに配列を返しますが、PHPでは、配列に設定されるまで関数を配列として扱うことはできません。

これを行う方法は次のとおりです。

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

PHPは少し薄暗いかもしれません。おそらくこれを2行で行う必要があります。

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