0

我有这段代码,其中有一个字符串可以同时包含字母字符或数字,我需要将它们区分开来。使用该功能不是逻辑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

      }
    }

现在有趣的是,我喂给 an 的任何东西$reag_1似乎都只会去true路径。我仔细检查并var_dump()追踪$reag_1了程序的去向。该数组中有字母字符。我的错误在哪里没有让算法以正确的方式运行?我有一种感觉,我一直在犯一个非常基本的语法错误。

提前致谢!

4

2 回答 2

1

可能,这一行在 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)){
于 2013-03-19T08:06:02.457 回答
1

使用(ord($v)>=48) and (ord($v)<=57).

您甚至可以使用>=Ord("0")<=Ord("9")

甚至还有is_numeric功能。

于 2013-03-19T08:06:09.510 回答