Пример 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
EDIT: Прояснить некоторую путаницу в моем вопросе;
Идея заключалась в том, чтобы динамически проверять каждый вход с помощью переключателя. Я использую отдельный класс проверки, чтобы все было чистым. Это краткий пример моего конечного результата:
//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 и всем остальным!
Вы можете обрабатывать $ _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']
– это простая строка, и она не сохраняет свое «происхождение».
foreach($_POST as $key => $value) { echo 'Key is: '.$key; echo 'Value is: '.$value; }
Если вы хотите сделать это динамически, вы можете сделать это следующим образом:
foreach ($_POST as $key => $value) { echo 'Name: ', $key, "\nValue: ", $value, "\n"; }
Заверните свой object/array
с помощью foreach
:
foreach($_POST as $key => $items) { echo $key . "<br />"; }
Или вы можете использовать var_dump
или print_r
для отладки больших переменных, таких как arrays
или objects
:
echo '<pre>' . print_r($_POST, true) . '</pre>';
Или
echo '<pre>'; var_dump($_POST); echo '</pre>';
current (array_keys ($ _ POST)) должен предоставить вам то, что вы ищете. Не тестировали.
На самом деле я нашел что-то, что может сработать для вас, посмотрите на это –
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); } ?>
даст вам результат,
fruit1
fruit4
fruit5
Так просто.
Хороший опрятный способ увидеть имена форм, которые будут представлены или будут отправлены
<?php $i=1; foreach ($_POST as $name => $value) { echo "</b><p>".$i." ".$name; echo " = <b>".$value; $i++; } ?>
Просто отправьте форму в этот скрипт, и он покажет вам, что подано.
Вы можете использовать цикл foreach Loop для получения всех значений, которые установлены.
foreach ($_POST AS $k=>$v){ echo "$k is $v"; }
Ваш пример
echo $_POST['email'].name; //output: email
не имеет смысла, так как вы уже знаете имя ценности, к которому вы обращаетесь?