【问题标题】:$_POST array issue$_POST 数组问题
【发布时间】:2018-04-13 12:07:38
【问题描述】:

我有这个代码:

$array = 'user_profile';
$var_name = 'postcode';
if ( isset($_POST['user_profile']) ) {
    echo '<br />Var name ('.$var_name.')<br />';
    print '<pre>';print 'Keys<br>';print_r(array_keys($_POST[$array]));print '</pre>';print '<br />';
    print '<pre>';print 'POST user_profile<br />';print_r($_POST[$array]);print '</pre>';print '<br />';
    print '<pre>';print 'POST dump<br />';var_dump($_POST[$array]);print '</pre>';print '<br />';
    echo '<br />{'.$_POST[$array][$var_name].'}<br /><br />';
}
die();

我明白了:

Var name (postcode)
Keys
Array
(
    [0] => 'address_1'
    [1] => 'address_2'
    [2] => 'address_3'
    [3] => 'address_4'
    [4] => 'address_5'
    [5] => 'postcode'
    [6] => 'phone'
)

POST user_profile
Array
(
    ['address_1'] => Templeton House
    ['address_2'] => 62 Templeton Street, Suite 22
    ['address_3'] => 
    ['address_4'] => Glasgow 
    ['address_5'] => 
    ['postcode'] => G40 1DA
    ['phone'] => 07222222
)

POST dump
array(7) {
  ["'address_1'"]=>
  string(15) "Templeton House"
  ["'address_2'"]=>
  string(29) "62 Templeton Street, Suite 22"
  ["'address_3'"]=>
  string(0) ""
  ["'address_4'"]=>
  string(8) "Glasgow "
  ["'address_5'"]=>
  string(0) ""
  ["'postcode'"]=>
  string(7) "G40 1DA"
  ["'phone'"]=>
  string(8) "07222222"
}

Notice: Undefined index: postcode in C:\xampp\htdocs\xxxxxx.com\src\controller\app\userController.php on line 153

{}

第 153 行是:echo '&lt;br /&gt;{'.$_POST[$array][$var_name].'}&lt;br /&gt;&lt;br /&gt;';

我整个上午都在试图找出我的错误在哪里。

有人可以帮助我吗?谢谢。

[编辑]

我做了一些更改,试图澄清所询问的内容。显然代码更长,但您看到的位是在函数的开头。没有其他东西可以帮助您了解正在发生的事情。输出正是我在浏览器中得到的,即使是最后一个括号,顺便说一下,我不明白为什么会出现,第一个是好的,但第二个是在 NOTICE ???之后打印的。

【问题讨论】:

  • 第 152 行的结果是什么?您打印 post 数组。这与您在标题 POST user_profile 下转储的数组相同吗?
  • IMO,它应该可以工作。你能发一个var_dump()而不是print_r()好吗? postcode 键可能有问题。
  • 您是否有没有向我们展示的代码?你确定你向我们展示了正确代码的正确输出吗?你确定你没有忘记在测试之前上传你的代码更改吗?我觉得这里发生了一些你没有告诉我们的事情。
  • 您可以发布字段 html 部分吗?
  • 最后一个{} 在那里,因为您在最后一个echo 通话中拥有它们。通知是在echo 执行之前生成的。

标签: php arrays post


【解决方案1】:

显然 $_POST['user_profile'] 的键带有附加引号。

您可以使用它访问它

$var_name = "'postcode'";

或通过修复生成这些奇怪的额外单引号 (') 的表单。

【讨论】:

  • @Syscall 这就是我们了解到print_r 从不在数组键周围添加任何引号的方式。 :-)
  • 精确 Cobra_Fast。
  • 我将始终使用转储而不是 print_r。听起来 print_r 不那么“专业”,不是吗?
  • @Carlos 我更喜欢var_dump()。也因为false没有显示在print_r()中。
【解决方案2】:

您的键中有单引号 ["'postcode'"]

echo '<br />{'.$_POST[$array]["'$var_name'"].'}<br /><br />';

【讨论】:

  • 这是我的错误:在输入中我写了 name="user_profile['postcode']" 而不是 name="user_profile[postcode]"。再次感谢。
  • 抱歉muecas,HTML是问题所在。你说得对,它是需要的。
  • 不客气,不用担心。不要忘记在下一个问题中添加尽可能多的信息;)
猜你喜欢
  • 2011-07-01
  • 1970-01-01
  • 2015-04-11
  • 1970-01-01
  • 1970-01-01
  • 2021-11-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多