4

もっと興味本位で…

$_GET['unique'] = blahblahblah=this_is_what_im_interested_in

次のように 2 番目の要素を取得できることはわかっています。

$words = explode('=', $_GET['unique']);
echo $words[1];

これを1行で取得する方法はありますか?-それで、「うまくいけば」それを関数/オブジェクト呼び出しに追加できるようになります。

$common->resetPasswordReply(... in here I would put it....);

お気に入り

$common->resetPasswordReply(explode('=', $_GET['unique'])[1]);

これが可能かどうかに興味があります。

4

3 に答える 3

8

関数が配列/オブジェクトを返す場合、PHP は関数のインデックス作成をサポートします。したがって、以下も機能します。

echo explode('=', $_GET['unique'])[1];

編集

これは配列逆参照と呼ばれ、PHP ドキュメントで説明されています。

PHP 5.4 以降では、関数またはメソッド呼び出しの結果を直接配列逆参照することが可能です。以前は、一時変数を使用することしかできませんでした。

PHP 5.5 以降では、配列リテラルを配列逆参照することが可能です。

于 2013-06-12T04:55:31.500 に答える
1

これでうまくいくはずです。

substr($str, strpos($str, "=")+1);
于 2013-06-12T05:01:27.460 に答える
1

奇妙なことに、これはlist()で「ほぼ」実行できますが、関数呼び出しでは使用できません。私はあなたが言うようにそれを投稿するだけです'more out of interest':-

$_GET['unique'] = "blahblahblah=this_is_what_im_interested_in";

list(, $second) = explode('=', $_GET['unique']);

var_dump($second);

出力:-

string 'this_is_what_im_interested_in' (length=29)

マニュアルページlist()の最初の例のセットで、柔軟性の良い例を見ることができます。

あなたの例は機能しますが、指摘する価値があると思います:-

$common->resetPasswordReply(explode('=', $_GET['unique'])[1]);

コードを難読化するようなものであり、関数に何を渡しているのかは明らかではありません。一方、次のようなものははるかに読みやすいです:-

list(, $replyText) = explode('=', $_GET['unique']);
$common->resetPasswordReply($replyText));

6 か月後にコードに戻り、デバッグを試みることを検討してください。できるだけ自己文書化してください。また、ここでユーザー入力を取得しているため、ある時点でサニタイズする必要があることを忘れないでください。

于 2013-06-12T06:13:49.803 に答える