考虑以下代码:
$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]
答案 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]);
$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)
通过将key
或index
与数组变量一起指定来调用数组的每个维度。
您可以通过提及数组的3个索引来引用3维数组元素。
$value = $array['index']['index']['index'];
像,
$billno = $array['customers']['history']['billno'];
您还可以使用具有可在指定数组索引时使用的索引值的变量。
$var1 = 'customers';
$var2 = 'history';
$var3 = 'billno';
$billno = $array[$var1][$var2][$var3];