-3

私はこれが許可されていることを知りませんでしたが、最近いくつかのことをテストしているときに許可されていることがわかりました。この機能のドキュメントも知らないので、これがどのように機能するかはわかりました。使えるなら使ったほうがいいですか?それは確かにコードの繰り返しを減らすからです。次の例を考えてみましょう:

    //using this feature

    if( is_numeric( $number = array_pop( $array ) ) ) {
        //work directly with $number and popped array
    }

    //not using this feature

    if( is_numeric( end( $array ) ) ) {
        $number = array_pop( $array );
        //had to use an extra statement, plus more processing since what could have been done in just statement had to be done in two
    }
4

3 に答える 3

2

=代入演算子です。演算子は 2 つ (場合によってはそれ以上)のオペランドを取り、値を返します。

よりよく知られている明白な例は、加算演算子 +です。左オペランドと右オペランドを取り、値を返します。これを関数の引数として使用することについて、よく考える必要があります。

is_numeric(1 + 2)

代入演算子は同じように機能します。

is_numeric($foo = 'bar')

代入演算子は、右側のオペランドを左側のオペランドに代入する効果があり、は全体として右側のオペランドを返します。これは、式を使用できる場所ならどこでも使用できます。これはほとんどどこでも使用できます。

于 2013-05-20T18:32:48.833 に答える
1

is_numericはい、割り当ては、条件内または条件内であっても、どこでも行うことができますif。PHP は最初に代入を実行し、その結果 (代入された値) が への引数として使用されますis_numeric

これは完全に有効でサポートされている構文であり、使用されていることがわかります。ただし、コードを読みやすくするために、そのような構文は一般的に避けるべきだと主張する人もいます (私を含む)。最初の例での割り当ては、コードをざっと見てみると簡単に見落とされる可能性があるため、1 年後に戻ってきたときにコードの意味を解釈するのが難しくなる可能性があります。2 番目の例は、より多くの行を必要としますが、読みやすく、理解しやすくなっています。

これが明示的に記載されているドキュメントの場所を見つけようとしています。参照はまだ見つかりませんが、Function Arguments に関するユーザー コメントで言及されています。

于 2013-05-20T18:00:19.827 に答える
0

まあarray_popは配列の内部を変更します。endは最後の要素を返すだけですが、これは「peek」コマンドと同等です。だからそれは依存します。配列を縮小したい場合はarray_pop、代わりに元の配列を保持したい場合に使用しますend

于 2013-05-20T17:32:45.027 に答える