我正在处理一些非常古老的代码,我正试图在Laravel上运行.数据库很复杂,充满了不必要的长存储过程,我没有重写的预算.
在大多数情况下,这些都很好,因为我可以访问像
$myID = $result [0] – > id
我希望这不仅仅是我PHP知识的一个空白……
$result = DB::select(DB::raw("Call MyOldStoredProcedure()"));
print_r($result);
这给了我:
Array ( [0] => stdClass Object ( [MIN(user_responses.sectionid)] => 2 ) )
我毫不奇怪无法访问
$number = $result[0]["MIN(user_responses.sectionid)"]; //or...
$number = $result[0]->...
我该怎么做才能从这个奇怪的关联数组/对象中检索这个奇异的结果?我即将放弃并解析数组字符串,但我知道有更好的方法.
最佳答案 最简单的选择是使用花括号以便能够引用特殊字符:
$number = $result[0]->{'MIN(user_responses.sectionid)'};
另一个选项是将变量设置为属性的名称,然后使用变量访问该属性:
$property = 'MIN(user_responses.sectionid)';
$number = $result[0]->$property;
此外,您还可以将对象转换为数组,并像最初尝试一样访问该属性.
$array = (array)$result[0];
$number = $array['MIN(user_responses.sectionid)'];
// or, if you're on PHP 7+
$number = ((array)$result[0])['MIN(user_responses.sectionid)'];