我希望使用从RESTful服务获得的PHP数组。
它们数组只是输出如下的简单数组,
array ( 0 => stdClass::__set_state(array( 'id' => '375', 'primary_name' => 'Beaufort 3', 'price' => '', 'sqft' => '2435', 'bdrm' => '3', 'bthm' => '2.5', 'display_title' => 'Traditional A1', 'full_img_path' => '', 'thumb_path' => '', 'available_in' => 'a:2:{i:0;s:1:"2";i:1;s:1:"5";}', 'display_first' => '', )), )
我正在使用file_get_contents
但现在不再是数组来获取数据。将其转换回可用数组的最佳方法是什么?
我从未见过提供此服务的服务,这可能是因为人们会避免使用它,但是看起来确实是他们希望您可以与之一起使用的东西eval()
。我想这可能是为了方便。我认为他们犯了一个错误。如果var_export
在这样的数组上使用,(我假设这是如何生成的):
$example = array ( array( 'id' => '375', 'primary_name' => 'Beaufort 3', 'price' => '', 'sqft' => '2435', 'bdrm' => '3', 'bthm' => '2.5', 'display_title' => 'Traditional A1', 'full_img_path' => '', 'thumb_path' => '', 'available_in' => 'a:2:{i:0;s:1:"2";i:1;s:1:"5";}', 'display_first' => '', ) );
那么您将得到一些可以eval
放入变量的内容,并可以在代码中使用。但是,如果您var_export
使用匿名对象数组而不是关联数组数组,则将获得所得到的响应类型,我不知道该使用哪种方法。我想他们正在var_export
查询的结果,并且他们正在使用FETCH_OBJ而不是FETCH_ASSOC来获取样式。
编辑:写完这篇文章后,我一直在浏览有关var_export的注释,并遇到了这种可行的方法。
$str = str_replace("stdClass::__set_state", "(object)", $str); eval('$array=' . $str . ';');
但是,仅仅因为有可能发生并不意味着我们应该这样做。