使用变量访问多维$ _POST

时间:2016-02-21 19:04:54

标签: php post

考虑以下代码:

$var = 'test';
$_POST[$test]; // equals $_POST['test']

如何使用相同的方法访问此变量:

$_POST['test'][0];

$var = 'test[0]';显然不起作用。

修改

让我提供更多信息。我有一个建立表格的班级 像这样添加一个元素:

//$form->set_element(type, name, defaultValue);
$form->set_element('text', 'tools', 'defaultValue');

这导致:

<input type="text" name="tools" value="defaultValue" />

在我的课程中我设置了值:如果表单已发布,请使用该值,否则使用默认值:

private function set_value( $name, $value='' ) {
    if( $_SERVER['REQUEST_METHOD'] == 'POST' )
        return $_POST[$name];
    else 
        return $value;
}

当我想添加多个“工具”时,我想使用:

$form->set_element('text', 'tools[0]', 'defaultValue');
$form->set_element('text', 'tools[1]', 'defaultValue');
$form->set_element('text', 'tools[2]', 'defaultValue');

但是在set_value函数中  这提供了$_POST['tools[0]']而不是$_POST['tools'][0]

3 个答案:

答案 0 :(得分:1)

[]中使用任意数量的变量来访问您需要的内容:

$test = 'test';
$index = 0;
var_dump($_POST[$test][$index]);

$test = 'test';
$index = 0;
$subkey = 'key'
var_dump($_POST[$test][$index][$subkey]);

等等。

没有特殊的功能来实现你想要的东西,所以你应该写一些东西,例如:

$key = 'test[0]';
$base = strstr($key, '[', true); // returns `test`
$ob_pos = strpos($key, '[');
$cb_pos = strpos($key, ']');
$index = substr($key, $ob_pos + 1, $cb_pos - $ob_pos - 1);
var_dump($arr[$base][$index]);

通过LinkinTED编辑

$key = 'test[0]';
$base = $n = substr($name, 0, strpos($key, '[') );
preg_match_all('/\[([^\]]*)\]/', $key, $parts);
var_dump($arr[$base][$parts[1][0]]);

答案 1 :(得分:0)

了解您刚刚将$_POST['test'][0];添加到[0]时的结果如何?作为单独的参考。

你必须这样做。

$_POST[$test][0];

如果在变量中需要两个部分,则需要使用多个变量或数组。

$var = Array( "test", "0" );
$_POST[$test[0]][$test[1]];

答案 2 :(得分:0)

通过将keyindex与数组变量一起指定来调用数组的每个维度。

您可以通过提及数组的3个索引来引用3维数组元素。

$value = $array['index']['index']['index'];

像,

$billno = $array['customers']['history']['billno'];

您还可以使用具有可在指定数组索引时使用的索引值的变量。

$var1 = 'customers';
$var2 = 'history';
$var3 = 'billno';
$billno = $array[$var1][$var2][$var3];