В дополнение к правильному ответу @Michael Kay:
number($x) = number($x)
это выражение true()
точно, когда $x
преобразуется в число
Здесь мы используем тот факт, что:
Если $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
числом или не является.