-2

フォームからの数値 $_POST フィールドのみを検出する正しいコードを知りたいです。

私のコードを修正してください。

foreach ($_POST as $vals) {
  if (is_numeric($vals)) {
    if (is_numeric($vals[$i]) && ($vals[$i]!="0")) {
    //do something
  } 
}
4

5 に答える 5

5
$_POST = array_filter($_POST, "is_numeric");

上記は、すべての非数値配列項目を削除します。

foreach (array_filter($_POST, "is_numeric") as $key => $val)
{   
    // do something
    echo "$key is equal to $val which is numeric.";  
}

アップデート:

$_POST[1]、$_POST[2] などのようなものだけが必要な場合..

foreach ($_POST as $key => $vals){
    if (is_numeric($key)){
      //do something
    }   
}
于 2012-06-26T16:12:13.997 に答える
1
if(isset($_POST)){
   foreach($_POST as $key => $value){
       if(is_numeric($key)){
          echo $value;
       }
   }
}

キーを比較する

于 2012-06-26T16:48:23.757 に答える
1

これを試して:

foreach ($_POST as $key => $val)
{   
  if (is_numeric($key))
  {
    // do something
  }   
}
于 2012-06-26T16:11:54.620 に答える
1

試す:

 foreach ($_POST as $key => $vals){
     //this is read: $_POST[$key]=$value   
     if (is_numeric($vals) && ($vals!="0")){
          //do something
     }   
 }
于 2012-06-26T16:18:51.670 に答える
0

isset()配列を操作しようとする次のコードは無効です。

if(isset($_POST)){   //isset() only works on variables and array elements.
   foreach($_POST as $key => $value){
       if(is_numeric($key)){
          echo $value;
       }
   }

foreach ($_POST as $key => $val)
{   
  if (is_numeric($key))
  {
    // do something
  }   
}

より良いですが、今度は foreach が $_POST のコピーを作成し、ループの間メモリに入れます (PHP のプログラミング: 第 6 章、p. 128-129)。バッファ オーバーフローやメモリ不足エラーが発生しないことを願っています。:-)


おそらく、開始する前に is_array()、empty()、count() などを使用して $_POST に関するいくつかの事実を判断する方が賢明でしょう...

if(is_array($_POST) && !empty($_POST))
{
    if(count($_POST) === count($arrayOfExpectedControlNames))
    {   
        //Where the the values for the $postKeys have already been validated some...

        if(in_array($arrayOfExpectedControlNames, $postKeys))
        {
            foreach ($_POST as $key => $val)  //If you insist on using foreach.
            {   
                if (is_numeric($key))
                {
                   // do something
                }
                else
                {
                   //Alright, already. Enough!
                }   
            }
        }
        else
        {
             //Someone is pulling your leg!
        }
    }
    else
    {
        //Definitely a sham!
    }
}
else
{
    //It's a sham!
}

それでも、$val値にはいくつかの検証が必要ですが、あなたはそれに取り組んでいると確信しています.

于 2014-05-30T00:43:09.637 に答える