我几乎不好意思把它说出来,但我很困惑,我正处于截止日期。可能是一个我看不到的简单拼写错误。
我有以下三行代码:($p
是POST
数组的一部分)
echo "<pre>";
print_r($p);
echo "Foo:".$p['fn2'];
输出就是这个。
Array
(
['fn1'] => uobQEC8IGQcd
['fn2'] => P1ZVSXBJzloE
)
Foo:
为什么不$p['fn2']
打印?这让我疯了。我缩短了这个例子,但是那里还有更多的FN,没有一个会单独显示,但是当我转储数组时我可以看到它们。 Arrrgh!
更新:关于建议,多一点代码......这是在一个foreach循环中开始的:
foreach ($_POST['pairs'] as $key=>$p) {
更新2:
VARDUMP:
array(10) {
["'fn1'"]=> string(12) "uobQEC8IGQcd"
["'fn2'"]=> string(12) "P1ZVSXBJzloE"
["'state1'"]=> string(6) "active"
["'state2'"]=> string(6) "active"
["'crit1'"]=> string(2) "27"
["'crit2'"]=> string(2) "24"
["'warn1'"]=> string(2) "18"
["'warn2'"]=> string(2) "12"
["'owner2'"]=> string(5) "Adobe"
["'name2'"]=> string(5) "Rack1"
}
更新3:我正在设置这样的post变量数组(在js中)
$('<input>').attr({ type: 'hidden', name: "pairs["+fn1+"]['fn1']", value:fn1 }).appendTo('form');
$('<input>').attr({ type: 'hidden', name: "pairs["+fn1+"]['fn2']", value:fn2 }).appendTo('form');
答案 0 :(得分:1)
它可能无法正常工作,因为您将密钥括在两组引号中,这会导致未定义的索引错误。如果你删除键周围的一对引号,它应该工作:
注意您的密钥: [“'fn1'”]
<?php
$p = array ( "state1" => "active",
"state2" => "active",
"crit1" => "27",
"crit2" => "24",
"warn1" => "18",
"warn2" => "12",
"owner2" => "Adobe",
"name2" => "Rack1"
);
echo "<pre>";
print_r($p);
echo "Foo:".$p['state2'];
?>
输出:
<pre>Array
(
[state1] => active
[state2] => active
[crit1] => 27
[crit2] => 24
[warn1] => 18
[warn2] => 12
[owner2] => Adobe
[name2] => Rack1
)
Foo:active
答案 1 :(得分:0)
啊哈! Vardump揭示了答案......当我从返回的javascript设置数组时,我正在这样做:
$('<input>').attr({ type: 'hidden', name: "pairs["+fn1+"]['fn1']", value:fn1 }).appendTo('form');
而不是:
$('<input>').attr({ type: 'hidden', name: "pairs['+fn1+'][fn1]", value:fn1 }).appendTo('form');
不应该在数组元素周围有单引号......
答案 2 :(得分:0)
如果你这样写你的HTML。
<form method="post" action="test.php">
<input name="value[test]"></input>
<button type="submit">submit!</button>
</form>
您可以通过这种方式访问test.php。
var_dump($_POST["value"]["test"]);
否则,如果你这样做。
<form method="post" action="test.php">
<input name="value['test']"></input>
<button type="submit">submit!</button>
</form>
如果您尝试此操作,将会收到未定义的索引错误。
var_dump($_POST["value"]["test"]);
因为现在你应该这样访问。
var_dump($_POST["value"]["'test'"]);
换句话说,引号会自动添加。