【问题标题】:Create variable Array name to store a $_POST array创建变量数组名称以存储 $_POST 数组
【发布时间】:2013-05-10 12:56:24
【问题描述】:

我正在处理一个带有很多复选框的表单。当检查是否填写了所有必填字段产生错误时,我的表单再次显示并预先填写了给定的数据(文本和复选框)。我的复选框可以分配给 4 个不同的主题,因此我为每个主题填充了一个数组。

所以基本上我为每个主题获取 $_POST 数据并从中创建一个数组。如果没有填充主题的复选框,我必须创建一个空数组,因为我需要一个数组才能使我的复选框得到预检查(我使用 in_array 来检查是否设置了复选框值)。

我对 php 很陌生,所以我尝试为此目的创建一个函数(常规方式工作正常)。

我的功能:

function fill_checkboxarray($topic)
{
    if(!empty($_POST["".$topic.""]))
    {
        ${$topic} = $_POST["".$topic.""];
    }
    else
    {
        ${$topic} = array();
    }
    return ${$topic};
}

在我的脚本中,我将主题的名称设置为传递给我的函数的变量:

$topic = "saunterstuetzt";
fill_checkboxarray($topic);

$topic = "sageplant";
fill_checkboxarray($topic);

$topic = "osunterstuetzt";
fill_checkboxarray($topic);

$topic = "osgeplant";
fill_checkboxarray($topic);

我得到以下 $_POST 数组:

$_POST["saunterstuetzt"]
$_POST["sageplant"]
$_POST["osunterstuetzt"]
$_POST["osgeplant"]

并且需要以下输出:(数组,要么用 POST 数据填充,要么为空)

$saunterstuetzt
$sageplant
$osunterstuetzt
$osgeplant

不知何故,变量数组名称不起作用...我收到错误:“in_array() [function.in-array]:第二个参数的数据类型错误”,所以我猜它不会创建数组.. .

提前感谢您的帮助! 朗古斯特

【问题讨论】:

  • in_array() 未在您的示例代码中使用。请分享更多代码。
  • 您的函数可以简化为:return !empty($_POST[$topic]) ? $_POST[$topic] : array();。你正在做的只是一种非常复杂的方法。这也是没有意义的,因为您没有对返回值做任何事情。

标签: php


【解决方案1】:

我对 php 很陌生,所以我尝试为此目的创建一个函数。

你真的不应该使用变量变量。

这是一种更简洁、可重复使用的方法:

function get_post_param($param, $default = null) {
  return empty($_POST[$param]) ? $default : $_POST[$param];
}

$saunterstuetzt = get_post_param("saunterstuetzt", array());
$sageplant = get_post_param("sageplant", array());
$osunterstuetzt = get_post_param("osunterstuetzt", array());
$osgeplant = get_post_param("osgeplant", array());

【讨论】:

    【解决方案2】:

    您不能将具有特定名称的变量作为函数的返回返回!

    【讨论】:

      猜你喜欢
      • 2015-04-21
      • 1970-01-01
      • 1970-01-01
      • 2015-12-29
      • 1970-01-01
      • 2011-01-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多