如何测试元素的值是否为数字/可转换为数字?
我的需求是,如果值是一个数字,将其复制,如果是一个字符串,则用99替换它。
string(number($x)) = 'NaN' 用于测试 $x 是否可转换为数字。
除了 @Michael Kay 的正确答案之外:
number($x) = number($x)
这个表达式在$x
可以转换为数字时返回true()
我们利用以下事实:
如果$x
不是一个数字,那么根据定义,number($x)
就是NaN
NaN
不等于任何值,甚至不等于NaN
现在,你的最终问题是:
我需要做的是,如果它是一个数字,则复制该值,并将其替换为99,如果它是一个字符串
使用方法:
$x * (number($x) = number($x))
+
99 * not(number($x) = number($x))
解释:当布尔值作为数值表达式的一部分时,它会被转换为数字(true()
--> 1,false()
--> 0)。在上述表达式中,+
的一个参数将是 0
,另一个参数将是 1
,具体取决于 $x
是否为数字。