PHP数组元素取值问题:带引号键名失效原因咨询
问题原因分析与解决办法
这问题其实很好理解——你不小心给数组键名多套了一层单引号,导致和实际存在的键不匹配了!
核心差异对比
先看你的两段代码的键名区别:
- 正常运行的代码中,你用的键是
['55']:这里的单引号是PHP的字符串界定符,不是键名的一部分,实际数组里的键就是纯文本的55。 - 出错的代码中,你拼接出来的键是
"'" .$special_term_id. "'":这段代码会生成一个包含单引号的字符串(比如'55',注意左右的单引号是键名的一部分)。
而你的$form['shs_term_node_tid_depth']['#options']数组里,根本不存在带单引号的键'55',只有不带单引号的键55,自然就找不到对应的值了。
修正方案
你只需要去掉多余的单引号拼接逻辑,直接用变量作为键名即可——PHP会自动处理整数到字符串的类型转换(数组的字符串键和整数键在匹配时会兼容):
$special_term_id = 55; $special_term_name = $form['shs_term_node_tid_depth']['#options'][$special_term_id]; echo $special_term_name;
如果担心类型兼容性问题,也可以显式把变量转为字符串:
$special_term_id = 55; $special_term_name = $form['shs_term_node_tid_depth']['#options'][(string)$special_term_id]; echo $special_term_name;
内容的提问来源于stack exchange,提问作者Waqar Ahmed
相关产品推荐
相关产品推荐

