PHP中如何使用foreach处理带空格的数据库对象属性取值
数据库返回对象带空格属性的正确取值方式
之前的写法为什么出错
- 直接写
$value->Number One触发解析错误,是因为PHP允许直接跟在->后面的裸属性名,不能包含空格,解析器碰到空格就会中断对属性名的识别,直接判定为语法错误。 - 换成
Number One之后拿到错误的0值,是因为 是HTML渲染用的转义实体,对应的实际字符是不间断空格,和数据库返回属性名里的普通半角空格不是同一个字符,根本匹配不到目标属性,自然取不到真实值。
正确的取值语法
PHP对属性名包含特殊字符(空格、特殊符号等)的对象,必须用大括号把属性名包裹成字符串来访问,固定格式为$对象变量->{ '实际属性名' }
对应循环代码修正后可正常运行:
foreach ($type as $value) { // 属性名要和数据库返回的完全一致,不要替换成转义字符、全角空格 $numberOne = $value->{'Number One'}; echo $numberOne; }
减少这类问题的实用技巧
如果是自己编写的SQL查询语句,完全可以在查询阶段就给带空格的列名设置无特殊字符的别名,比如把带空格的Number One别名为number_one,后续访问时就可以直接写$value->number_one,不用依赖特殊语法匹配,能大幅降低取值出错的概率。
内容的提问来源于stack exchange,提问作者user14955679
相关产品推荐
相关产品推荐

