12

HTMLの例:

  <form method="post" id="form" action="form_action.php">
    <input name="email" type="text" />
  </form> 

ユーザーが入力フィールドに次のように入力します:dfg@dfg.com

echo $_POST['email']; //output: dfg@dfg.com

フォーム内の各入力の名前と値がサーバーに送信されます。nameプロパティを取得する方法はありますか?だから何かのような..

echo $_POST['email'].name; //output: email

編集:私の質問についてのいくつかの混乱を明確にするために;

アイデアは、スイッチを使用して各入力を動的に検証することでした。すべてをクリーンに保つために、別の検証クラスを使用します。これは私の最終結果の短い例です:

//Main php page
if (is_validForm()) {
    //All input is valid, do something..
}

//Separate validation class    
function is_validForm () {
    foreach ($_POST as $name => $value) {
        if (!is_validInput($name, $value)) return false;
    }
    return true;
   }

function is_validInput($name, $value) {
    if (!$this->is_input($value)) return false; 

    switch($name) {
        case email: return $this->is_email($value);  
        break;
        case password: return $this->is_password($value);
        break;
//and all other inputs
        }
    }

raina77owと他のみんなに感謝します!

4

8 に答える 8

22

次のように、$ _ POSTをforeachループで処理して、名前とその値の両方を取得できます。

foreach ($_POST as $name => $value) {
   echo $name; // email, for example
   echo $value; // the same as echo $_POST['email'], in this case
}

ただし、値からプロパティの名前を取得することはできません。$_POST['email']これは単純な文字列であり、その「オリジン」を格納しません。

于 2012-11-14T11:23:56.857 に答える
3
foreach($_POST as $key => $value)
{
 echo 'Key is: '.$key;
 echo 'Value is: '.$value;
}
于 2012-11-14T11:24:25.560 に答える
1

ただし、動的に実行したい場合は、次のように実行できます。

foreach ($_POST as $key => $value)
{
    echo 'Name: ', $key, "\nValue: ", $value, "\n"; 
}
于 2012-11-14T11:26:02.083 に答える
1

でループobject/arrayしますforeach

foreach($_POST as $key => $items) {
    echo $key . "<br />";
}

または、またはを使用してvar_dump、またはprint_rのような大きな変数をデバッグできます。arraysobjects

echo '<pre>' . print_r($_POST, true) . '</pre>';

または

echo '<pre>';
var_dump($_POST);
echo '</pre>';
于 2012-11-14T11:26:43.933 に答える
1

実際に私はあなたのために働くかもしれない何かを見つけました、これを見てください-

http://php.net/manual/en/function.key.php

このページには、以下のコード、

<?php
$array = array(
    'fruit1' => 'apple',
    'fruit2' => 'orange',
    'fruit3' => 'grape',
    'fruit4' => 'apple',
    'fruit5' => 'apple');

// this cycle echoes all associative array
// key where value equals "apple"
while ($fruit_name = current($array)) {
    if ($fruit_name == 'apple') {
        echo key($array).'<br />';
    }
    next($array);
}
?>

あなたに出力を与えるでしょう、

フルーツ
1 フルーツ4 フルーツ
5

それと同じくらい簡単です。

于 2012-11-14T11:33:58.877 に答える
0

current(array_keys($_POST)) は、探しているものを提供するはずです。テストしていませんが。

于 2012-11-14T11:27:23.430 に答える
-2

foreachループを使用して、設定されているすべての値を取得できます。

foreach ($_POST AS $k=>$v){
    echo "$k is $v";
}

あなたの例

echo $_POST['email'].name; //output: email

アクセスしている値の名前をすでに知っているので、意味がありませんか?

于 2012-11-14T11:25:44.480 に答える