2013-02-20 57 views
0

我可以走出这个。正常的语法似乎工作,否则替代语法似乎不按预期工作。PHP的替代语法和字符串/数字比较

<?php 
$num = "abcdefghi"; 

function checkNum($n) { 

    if(!is_numeric($n)) 
    { 
     return "not numeric"; 
    } else 
    { 
     if($n<0) 
     { 
      return "less than zero"; 
     } else 
     { 
      return "greater then or equal to zero"; 
     } 
    } 
} 

echo checkNum($num); # echoes "not numeric"; 

function checkNum2($n) 
{ 
    $r = !is_numeric($n) ? "not numeric" : $n<0 ? "less than zero" : "greater then or equal to zero"; 
    return $r; 
} 

echo checkNum2($num); # echoes "less than zero" 
?> 

那么问题是什么?

提前谢谢。

+0

仅仅因为一个字符串包含一个数值,你可能想要明确地投它,否则浮动将被视为一个整数在随后的比较中 – 2013-02-20 09:25:47

回答

0

使用这个,你刚刚在你的函数中错过了()

function checkNum2($n) 
{ 
    $r = !is_numeric($n) ? "not numeric" : ($n<0 ? "less than zero" : "greater then or equal to zero"); 
    return $r; 
} 

echo checkNum2($num); # echoes "not numeric"; 

工作示例http://codepad.viper-7.com/DVvQaC

+1

该死! ......括号...... :-) Thankyou! – Nineoclick 2013-02-20 09:42:29

+0

@Nineoclick欢迎。 :) – 2013-02-20 09:44:22

+0

@Nineoclick标记答案是正确的,如果它解决了你的问题是好习惯。 :) – 2013-02-20 09:47:29

0

试试这个:

$r = (!is_numeric($n)) ? "not numeric" : (($n<0) ? "less than zero" : "greater then or equal to zero");