0

http://www.php.net/manual/en/function.str-split.php#78040でこのスクリプトに出会いました

   /**
     Returns a formatted string based on camel case.
     e.g. "CamelCase" -> "Camel Case".
    */
    function FormatCamelCase( $string ) {
            $output = "";
            foreach( str_split( $string ) as $char ) {
                    strtoupper( $char ) == $char and $output and $output .= " ";
                    $output .= $char;
            }
            return $output;
    }

骨董品の部分は:

strtoupper( $char ) == $char and $output and $output .= " ";

私の質問

  • 詳細な内訳strtoupper( $char ) == $char and $output and $output .= " ";と有効な理由
  • これはbreak、 では機能しませんが、 returnecho含むすべての関数で機能しますprint
  • これはベストプラクティスですか
  • そのようなコードには利点と欠点がありますか
4

5 に答える 5

4

http://en.wikipedia.org/wiki/Short-circuit_evaluation

他の回答が示しているように、後続のすべてのステートメントは、先行するステートメント==trueの場合にのみ実行されます。

これは、次のようなコードでより適切です。if(foo and bar){//何かをする}

foo == falseの場合、バーの評価に時間を浪費する必要はありません。

ブール論理の外で短絡評価を有利に使用しているとは言えません。他のコーダーが私のコードを見るために、私はおそらく今は始めません。

于 2012-10-06T10:49:49.577 に答える
4

と同じです

if (strtoupper( $char ) == $char) {
    if ($output) {
         $output .= " ";
    }  
}

code の場合A and B、がtrue に評価されたB場合に実行されます。A

&&とisの違いは、andis&&よりも優先されます。and.=

于 2012-10-06T10:38:58.953 に答える
1
  strtoupper( $char ) == $char and $output and $output .= " ";

最初に大文字かどうかをチェックし、そうであれば次に進み、$output空でないかどうかをチェックしてから、$output にスペースを追加します。

ベストプラクティスではありませんが、ワンライナーを使用するとクールに感じます

利点はクールだということです 欠点は、理解するために何度も読む必要があることです

于 2012-10-06T10:41:24.903 に答える
0

strtoupper( $char ) == $char と $output と $output .= " ";

意味

if(strtoupper( $char ) == $char && $output && $output.=" "){
// if string is equal than it checks for $output
//is that present?
// if  present than it checks for $output value
//and add a space to that if everything works fine than go to true part
}
于 2012-10-06T10:40:58.670 に答える
0

andここに、論理演算子で連結された 3 つのサブ式で構成される式があります。

       strtoupper( $char ) == $char and $output and $output .= " ";
                             A      and    B    and       C

演算子の優先順位により、順序は左から右へと単純になります。

それは、あなたはただ通り抜けることができるからです。A と B と C が単独で何をするかを理解していると思います。ただし、これら 3 つのいずれかが評価された場合、PHP はfalse式全体の実行を中止します。その式falseは、実行されるまで実行されます (そうでない場合、PHP は結果を言うことができません。短絡評価を参照してください)。

文字は大文字で出力され、出力にスペースが追加されます。

文字が大文字でない場合、その文は間違っています。したがって、次の期間を超えて継続することはありません。

文字は大文字ではありません。

文を取り上げて、文字が大文字であるとしましょう。しかし、出力はありません:

文字は大文字で、出力はありません。

そして最後に、出力があるとしましょう:

文字は大文字で出力され、出力にスペースが追加されます。

プログラミング言語は、何かを表現するための言語と考えてください。

あくまで一般的な表現です。一部のプログラマーは、表現力豊かな式を書くことに慣れていません。彼らのメンタル モデルでは、 if then else のような基本的な書き方です。

if (A) then if (b) then C.

それは次のように読みます:文字が大文字の場合、出力の場合、出力にスペースを追加します。

あなたに最も適したものをしてください。そして、コードを読むだけです。助けになる:

strtoupper( $char ) == $char and $output and $output .= " ";

文字は大文字で出力し、スペースを追加して出力します。

于 2012-10-06T16:26:28.790 に答える