如何通过键名获取PHP数组值?表单提交数组取值异常求助
问题解决:无法访问PHP数组中的
rule键 嘿,这个问题我遇见过!原因出在你HTML里input的name属性写法上,咱们一步步来理清楚:
问题根源
你写的input name是new_date['rule'][],PHP在解析这种表单数据的时候,会把括号里的单引号也当作键名的一部分。也就是说,你的$_POST['new_date']数组里,实际的键名不是rule,而是'rule'(注意是包含单引号的字符串)。
看你输出的数组结构就能确认:
Array ( ['rule'] => Array ( [0] => rule_5a6c50ff02fff ) ['date'] => Array ( [0] => 2018-05-24 ) )
这里的['rule']其实表示键名是'rule',而不是你以为的rule。所以当你用$var['rule']去访问时,自然找不到对应的值,返回空。
两种解决方案
方案1:修正HTML的name写法(推荐)
把input的name里的单引号去掉,改成不带引号的形式:
<input type="hidden" name="new_date[rule][]" value="hfgfgfgfg"> <input type="date" name="new_date[date][]" />
这样PHP解析后,$_POST['new_date']的键名就是rule和date,直接用$var['rule']就能正常获取数组值了。
方案2:如果不能修改HTML,直接访问带单引号的键名
如果你暂时没法改HTML代码,那访问的时候要匹配实际的键名(带单引号),可以这样写:
// 用双引号包裹键名,里面的单引号直接写 print_r($var["'rule'"]); // 或者用单引号包裹,转义里面的单引号 print_r($var['\'rule\'']);
这样就能正确获取到对应的值了。
内容的提问来源于stack exchange,提问作者Tracy
相关产品推荐
相关产品推荐

