PHPではこの動作は正しいですか?PHP型キャストの優先度
は私はマイナスが最初の「1」と「-1」整数にキャストに連結されて理解されず「2」の文字列です。
理由を説明してください。
これを解決する最善の方法は何ですか? これは?
<?php echo '-' . (string)1 + 1 . ' crazy cats'; ?>
PHPではこの動作は正しいですか?PHP型キャストの優先度
は私はマイナスが最初の「1」と「-1」整数にキャストに連結されて理解されず「2」の文字列です。
理由を説明してください。
これを解決する最善の方法は何ですか? これは?
<?php echo '-' . (string)1 + 1 . ' crazy cats'; ?>
ご希望の場合は、これが優先回避:
これはだまされやすい人ではない驚きましprintf('-%d crazy cats',1+1);
まず第一に、正しいことですが、それが違う場合でも正しいでしょう、それはPHP開発者がオペランドの優先順位を定義した方法です。このシナリオでは
、何のオペランドが優先されないので、uはそれが(文字列の算術演算は、最初の数字にそれらをキャストして、算術演算を実行しようとします)右
'-' . 1 ==> '-1'
'-1' + 1 ==> 0
に左読みください。0 . ' crazy cats' ==> "0 crazy cats"
(数字に対する文字列操作は、文字列にキャストします)。なんてこった、あなたは私が:)ところで、演算子の優先順位がathttp利用可能であるよりも速かった:// php.net/manual/en/language.operators.precedence.php。 –
あなたの言葉はオフです。 '-'
はキャストされていませんが連結されていません。
PHPはまだ(string) 1
と-1
を整数として扱います。
.
および+/-
は、PHPで同じ優先順位を持ちます。したがって、文字列は左から右に読むことができます。
echo '-1' + '1 crazy cats';
マイナスはもちろんキャストされていません、問題を修正しました。 – Paker
あなたは-2狂気の猫をしたい場合、あなたは括弧で操作する優先順位を設定することができます:
上記言うと似て
echo '-' . (1 + 1) . ' crazy cats';
echo
もecho 'foo', 'bar'
いるの構造を次の項目を別々のステートメントに分けてエコーします。その場合、連結順序を心配する必要はありません。
あなたは<?php echo '-', (1 + 1), ' crazy cats'; ?>
を行うことができ、あなたのネコはネガを気にしません!
...そう+1 – Louis