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

      }
    }

面白いのは、私がフィードしたものは何でもパス$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 に答える