0

スクリプトに小さな問題があります。

私は厳格な基準を取得しています:変数のみが参照によって渡されるべきです

if( $checkDNS && ($domain = end(explode('@',$email, 2))) )
4

3 に答える 3

3

PHPマニュアルから:

この配列は関数によって変更されるため、参照によって渡されます。これは、実際の変数のみが参照によって渡される可能性があるため、配列を返す関数ではなく、実際の変数を渡す必要があることを意味します。

したがって、 end 関数で変数を使用する必要があります。

$domain = explode('@',$email, 2);
if( $checkDNS && ($domain = end($domain)) )
于 2013-01-21T22:28:07.743 に答える
2

マニュアルから:

mixed end ( array &$array )

end参照によって配列を取得し、内部ポインターを移動します。あなたの配列は関数の出力であるため、参照によって配列を正しく変更することはできません。

于 2013-01-21T22:27:23.720 に答える
0

メッセージが示すように、パラメーターは参照であるため、 end には変数が必要です。

しかし、PHP 5.4 以降では、次のように配列を逆参照できます。

$domain = explode('@',$email, 2)[1];

$email には常に@. そうしないと、 end(...) によって予期しない結果が生じる可能性があります。

于 2013-01-21T22:33:51.887 に答える