Печатать имя переменной $_POST вместе со значением
У меня есть POST в PHP, для которого я не всегда буду знать имена полей переменных, которые я буду обрабатывать.
У меня есть функция, которая будет проходить через значения (однако я также хотел бы захватить имя переменной, которое будет с ней.)
foreach ($_POST as $entry)
{
print $entry . "<br>";
}
Как только я выясню, как захватить имена переменных, мне также нужно выяснить, как я могу сделать функцию достаточно умной, чтобы обнаруживать и перебирать массивы для переменной, если они присутствуют (т.е. если у меня есть некоторые значения флажка. )
Ответы
Ответ 1
Если вы просто хотите распечатать весь массив $_POST, чтобы проверить правильность отправки ваших данных, используйте print_r:
print_r($_POST);
Чтобы рекурсивно распечатать содержимое массива:
printArray($_POST);
function printArray($array){
foreach ($array as $key => $value){
echo "$key => $value";
if(is_array($value)){ //If $value is an array, print it as well!
printArray($value);
}
}
}
Примените некоторые дополнения к вложенным массивам:
printArray($_POST);
/*
* $pad='' gives $pad a default value, meaning we don't have
* to pass printArray a value for it if we don't want to if we're
* happy with the given default value (no padding)
*/
function printArray($array, $pad=''){
foreach ($array as $key => $value){
echo $pad . "$key => $value";
if(is_array($value)){
printArray($value, $pad.' ');
}
}
}
is_array возвращает true, если данная переменная является массивом.
Вы также можете использовать array_keys, который вернет все имена строк.
Ответ 2
Вы можете иметь цикл foreach, указав индекс вместе со значением:
foreach ($_POST as $key => $entry)
{
print $key . ": " . $entry . "<br>";
}
Что касается проверки массива, используйте функцию is_array():
foreach ($_POST as $key => $entry)
{
if (is_array($entry)) {
foreach($entry as $value) {
print $key . ": " . $value . "<br>";
}
} else {
print $key . ": " . $entry . "<br>";
}
}
Ответ 3
Это гораздо лучше использовать:
if (${'_'.$_SERVER['REQUEST_METHOD']}) {
$kv = array();
foreach (${'_'.$_SERVER['REQUEST_METHOD']} as $key => $value) {
$kv[] = "$key=$value";
}
}
Ответ 4
Если вы хотите обнаружить поля массива, используйте такой код:
foreach ($_POST as $key => $entry)
{
if (is_array($entry)){
print $key . ": " . implode(',',$entry) . "<br>";
}
else {
print $key . ": " . $entry . "<br>";
}
}