Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/254.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 为什么我的函数返回意外的结果?_Php_Function - Fatal编程技术网

Php 为什么我的函数返回意外的结果?

Php 为什么我的函数返回意外的结果?,php,function,Php,Function,以下是我的功能: function getShortNum($n) { if ( $n < 10000 ) return $n; elseif ( $n < 100000 ) return round( $n / 1000, 1) . "k"; elseif ( $n < 1000000 ) return floor( $n / 1000 ) . "k"; elseif ( $n < 1000000000) r

以下是我的功能:

function getShortNum($n) {
    if     ( $n < 10000 )     return $n;
    elseif ( $n < 100000 )    return round( $n / 1000, 1) . "k";
    elseif ( $n < 1000000 )   return floor( $n / 1000 )   . "k";
    elseif ( $n < 1000000000) return floor( $n / 1000000) . "M";
    else                      return "Wow!!!";      
}
好的,一切都好。就在我将一个字母传递给该函数时,它返回完全相同的东西。例如:

echo getShortNum("N"); // output: N
为什么??我所有的条件都是关于函数中的数字,而不是字母。那么它是如何工作的呢?

因为PHP确实如此。它将把字符串“N”转换为整数,这样就可以进行if/else语句中的比较。“N”变为零,这与您的第一次比较相匹配

类型转换是PHP的一个非常重要的方面,因为不完全理解它会导致难以检测的错误和意外的结果


如果您的目标是防止转换非数值,则应使用诸如和等函数检查数据类型。

当您将
N
转换为一个数字以比较
$N<10000
时,
$N
变为
0
,这将导致第一个条件为true。(返回
$n
,在本例中,返回值为
n

明白了。。thx+1.
echo getShortNum("N"); // output: N