Вывести имя переменной $ _POST вместе со значением

У меня есть POST в PHP, для которого я не всегда буду знать имена переменных полей, которые я буду обрабатывать.

У меня есть функция, которая будет перебирать значения (однако я также хотел бы захватить имя переменной, которая идет с ним.)

foreach ($_POST as $entry)
{
     print $entry . "<br>";
}

Как только я выясню, как получить имена переменных, мне также нужно выяснить как я могу сделать функцию достаточно умной, чтобы обнаруживать и перебирать массивы для переменной, если они присутствуют (то есть, если у меня есть некоторые значения флажков. )

22
задан jww 28 May 2016 в 18:11
поделиться

3 ответа

Если вы просто хотите распечатать весь массив $ _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 возвращает истину, если данная переменная является массивом.

Вы также можете использовать array_keys, который вернет все имена строк.

42
ответ дан 29 November 2019 в 04:19
поделиться

Вы можете заставить цикл 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>";
     }
}
5
ответ дан 29 November 2019 в 04:19
поделиться

Если вы хотите обнаруживать поля массива, используйте такой код:

foreach ($_POST as $key => $entry)
{
    if (is_array($entry)){
        print $key . ": " . implode(',',$entry) . "<br>";
    }
    else {
        print $key . ": " . $entry . "<br>";
    }
}
0
ответ дан 29 November 2019 в 04:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: