我有这段代码,其中有一个字符串,可以包含字母字符或数字,我需要告诉他们分开。用函数ord()
不符合逻辑吗?当然会!
$r_1 = $_POST["r1"];
$reag_1 = explode (" ", $r_1);
foreach ($reag_1 as $k => $v) {
if ( ord($v) != (48 || 49 || 50 || 51 || 52 || 53 || 54 || 55 || 56 || 57)){
// if its a digit then do some stuff
} else {
// then its something else and lets do some OTHER stuff
}
}
现在有趣的是,无论我给$reag_1
喂什么,似乎只去true
路径。我仔细检查了var_dump()
和$reag_1
,并追踪了程序的去向。该数组中有字母字符。我的错误是什么导致算法无法正常运行?我有一种感觉,我总是犯一个非常基本的语法错误。
提前感谢!
使用(ord($v)>=48) and (ord($v)<=57)
您甚至可以使用>=Ord("0")
和<=Ord("9")
。
甚至还有is_numeric
功能
可能,这一行在PHP中逻辑上是不正确的:
if ( ord($reag_1[$k]) != (48 || 49 || 50 || 51 || 52 || 53 || 54 || 55 || 56 || 57))
必须使用:
if(ord($reag_1[$k]) != 48 || ord($reag_1[$k]) != 49 ...)
或者更好的用法:
$array = array(48, 49, 50, 51, 52, 53, 54, 55, 56, 57)
if(in_array(ord($reag_1[$k]), $array)){