【问题标题】:Print $_POST variable name along with value打印 $_POST 变量名和值
【发布时间】:2011-03-30 04:44:42
【问题描述】:

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

我有一个函数会循环遍历这些值(但是我也想捕获与之相关的变量名。)

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

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

【问题讨论】:

  • 这个问题肯定没有本地化,因为我也经历过类似的情况。

标签: php arrays forms post


【解决方案1】:

您可以让 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>";
     }
}

【讨论】:

    【解决方案2】:

    如果您只想打印整个 $_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 来返回所有的字符串名称。

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        【解决方案4】:

        使用起来会好很多:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-08-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多