7

によって返された配列の要素にすぐにアクセスできないのはなぜexplode()ですか?

たとえば、これは機能しません。

$username = explode('.',$thread_user)[1]; 
//Parse error: syntax error, unexpected '[

しかし、このコードは次のことを行います。

$username = explode('.',$thread_user); 
$username = $username[1];

私は通常、PHP でプログラミングすることはないので、これはかなり混乱を招きます。

4

6 に答える 6

6

あなたが望むことをする方法が明らかでない理由は、それexplodeが を返す可能性があるからfalseです。インデックスを作成する前に、戻り値を確認する必要があります。

于 2010-02-15T21:47:41.160 に答える
5

バージョン依存です。PHP 5.4は、返された配列へのアクセスをサポートしています。

ソース: http://php.net/manual/en/language.types.array.php#example-115

于 2013-09-01T11:26:26.040 に答える
4

実際、PHP はこの構文をサポートしていません。Javascript のような言語 (たとえば) では、パーサーはより複雑なネスト/チェーン操作を処理できますが、PHP はそれらの言語の 1 つではありません。

于 2010-02-15T22:04:35.020 に答える
2

destroy() は配列を返すため、次のような他の関数を使用できます。$username = current(explode('.',$thread_user));

于 2010-02-15T22:19:24.800 に答える
1

1行にまとめる方法は次のとおりです。

$username = current(array_slice(explode('.',$thread_user), indx,1));

indx展開された配列から必要なインデックスはどこにありますか。私はphpが初めてですが、展開された配列と言うのが好きです:)

于 2012-05-06T12:37:15.267 に答える
1

私は自分の関数を使用するだけです:

function explodeAndReturnIndex($delimiter, $string, $index){
    $tempArray = explode($delimiter, $string);
    return $tempArray[$index];
}

あなたの例のコードは次のようになります。

$username = explodeAndReturnIndex('.', $thread_user, 1);
于 2012-04-09T16:35:01.017 に答える