php
  • javascript
  • ternary-operator
  • unary-operator
  • 2012-03-14 237 views 3 likes 
    3

    我想做Fizzbuzz在PHP中的使用,如果一元,但输出是不是我所期望的,我不明白为什么,所以我的代码复制粘贴到javascript,现在结果如预期。为什么?三元运营商在JavaScript和PHP,不同的输出

    <script src="http://code.jquery.com/jquery-latest.js" type="text/javascript"></script> 
    <script> 
    $(function(){ 
    papa ='Javascript Output: '; 
    for($i=1;$i <= 10; $i++){ 
    papa += ($i %5 === 0 && $i %3 === 0) ? 'FizzBuzz' : ($i % 3 === 0) ? 'Fizz' : ($i % 5 === 0) ? 'Buzz' : $i; 
    $('#result').text(papa); 
    } 
    }) 
    </script> 
    <?php 
    echo 'PHP Output: '; 
    for($i=1;$i <= 10; $i++){ 
    $papa ($i %5 === 0 && $i %3 === 0) ? 'FizzBuzz' : ($i % 3 === 0) ? 'Fizz' : ($i % 5 === 0) ? 'Buzz' : $i; 
    echo $papa; 
    } 
    ?> 
    <div id='result'></div> 
    

    输出

    PHP Output: 12Buzz4BuzzBuzz78BuzzBuzz 
    Javascript Output: 12Fizz4BuzzFizz78FizzBuzz 
    

    回答

    5

    三元运营商在JavaScript(你所谓的 “一元,如果”)使用权的关联性,并在PHP对于同一经营者左结合。

    是的,这可以是固定的与更括号(以及任何相关的问题算符优先)。

    +0

    也注意到超酷2版本的逻辑“和”和“或”,以及它们在优先级上的差异! (在PHP中) – mpen 2012-03-14 07:06:29

    2
    in PHP, change 
        ($i %5 === 0 && $i %3 === 0) ? 'FizzBuzz' : ($i % 3 === 0) ? 'Fizz' : ($i % 5 === 0) ? 'Buzz' : $i; 
        to: 
        ($i %5 === 0 && $i %3 === 0) ? 'FizzBuzz' : ($i % 3 === 0) ? 'Fizz' : (($i % 5 === 0) ? 'Buzz' : $i); 
    
    相关问题