使用从REST服务检索的PHP数组

 OpenZzzz 发布于 2022-12-29 12:14

我希望使用从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但现在不再是数组来获取数据。将其转换回可用数组的最佳方法是什么?

1 个回答
  • 我从未见过提供此服务的服务,这可能是因为人们会避免使用它,但是看起来确实是他们希望您可以与之一起使用的东西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 . ';');
    

    但是,仅仅因为有可能发生并不意味着我们应该这样做。

    2022-12-29 12:15 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有