php 打印 $_POST 变量名和值

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/3489387/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-25 09:58:06  来源:igfitidea点击:

Print $_POST variable name along with value

phparraysformspost

提问by Joseph U.

I have a POST in PHP for which I won't always know the names of the variable fields I will be processing.

我在 PHP 中有一个 POST,我并不总是知道我将处理的变量字段的名称。

I have a function that will loop through the values (however I would also like to capture the variable name that goes with it.)

我有一个函数可以遍历这些值(但是我也想捕获与之配套的变量名称。)

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

Once I figure out how to grab the variable names, I also need to figure out how I can make the function smart enough to detect and loop through arrays for a variable if they are present (i.e. if I have some checkbox values.)

一旦我弄清楚如何获取变量名称,我还需要弄清楚如何使函数足够智能,以检测和循环变量是否存在数组(即,如果我有一些复选框值。)

回答by Michael Robinson

If you just want to print the entire $_POST array to verify your data is being sent correctly, use print_r:

如果您只想打印整个 $_POST 数组以验证您的数据是否正确发送,请使用print_r

print_r($_POST);

To recursively print the contents of an array:

要递归打印数组的内容:

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);
        }  
    } 
}

Apply some padding to nested arrays:

对嵌套数组应用一些填充:

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_arrayreturns true if the given variable is an array.

如果给定的变量是一个数组,is_array返回 true。

You can also use array_keys which will return all the string names.

您还可以使用 array_keys 返回所有字符串名称。

回答by Jeffrey Blake

You can have the foreach loop show the index along with the value:

您可以让 foreach 循环显示索引和值:

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

As to the array checking, use the is_array()function:

至于数组检查,使用is_array()函数:

foreach ($_POST as $key => $entry)
{
     if (is_array($entry)) {
        foreach($entry as $value) {
           print $key . ": " . $value . "<br>";
        }
     } else {
        print $key . ": " . $entry . "<br>";
     }
}

回答by ascci

It's much better to use:

最好使用:

if (${'_'.$_SERVER['REQUEST_METHOD']}) {
    $kv = array();
    foreach (${'_'.$_SERVER['REQUEST_METHOD']} as $key => $value) {
        $kv[] = "$key=$value";
    }
}

回答by silvo

If you want to detect array fields use a code like this:

如果要检测数组字段,请使用如下代码:

foreach ($_POST as $key => $entry)
{
    if (is_array($entry)){
        print $key . ": " . implode(',',$entry) . "<br>";
    }
    else {
        print $key . ": " . $entry . "<br>";
    }
}