2010-04-17 58 views
1

好的。现在我放弃了。我一直在玩这个小时。如何在PHP中访问这些数据的成员?

  • 我有一个变量名$data
  • 可变包含这些内容:(通过使用var_export()萃取)

    array (
        'headers' => 
        array (
        'content-type' => 'multipart/alternative; boundary="_689e1a7d-7a0a-442a-bd6c-a1fb1dc2993e_"', 
    ), 
        'ctype_parameters' => 
        array (
        'boundary' => '_689e1a7d-7a0a-442a-bd6c-a1fb1dc2993e_', 
    ), 
        'parts' => 
        array (
        0 => 
        stdClass::__set_state(array(
         'headers' => 
         array (
         'content-type' => 'text/plain; charset="iso-8859-1"', 
         'content-transfer-encoding' => 'quoted-printable', 
        ), 
         'ctype_primary' => 'text', 
        )), 
    ), 
    ) 
    

    我去掉了一些非必要的数据。

  • 我要访问的报头值(第二线以上) - 简单:$data->headers
  • 我想(在stdClass::东西后第14行)访问头价值 - 如何?

如何访问stdClass::__set_state部分中的值?

我试图var_export($data->parts);,但我得到的是

NULL

+0

我也放弃了。折腾代码。 – 2010-04-17 03:14:16

+0

折腾一切!我疯了,我告诉你,疯了! _尽管如此... _ – 2010-04-17 03:19:21

回答

3

这个变量声明你张贴的方式吗?像:

$data = array(
      'headers' => 
      array (
      … 

在这种情况下,我不太清楚你如何通过$data->headers访问'headers'。它应该是$data['headers'],因为它是一个数组,而不是一个对象。

再往下,stdClass::__set_state(array('headers' => …))静态调用方法的类的stdClass__set_state。不管这种方法我不知道,但只有它的返回值将被分配给'parts' => array(0 => ...)键。

如果OTOH你正在展示是var_dump($data)的结果,那么这是不正确的废话,因为stdClass::__set_state()绝不会在var_dump显示出来。在你的代码或你发布的内容中有些东西是可疑的,如果没有看到更多内容,很难说。

无视以上,var_export打印类这个时髦的方式。

$data['headers']应该为第一个标头部分做。进一步下来,$data['parts'][0]->headers应该做的伎俩。

+0

首先,'var_export' _not_'var_dump'。其次,数据没有被声明,我从第三方库中获取。第三,我很困惑:( – 2010-04-17 03:18:46

+0

好消息!我只是注意到你是对的 - 我正在以'$ data-> member'而不是'$ data ['member']'来访问数据 - 愚蠢的我!解决问题。+1和你的最佳答案! – 2010-04-17 03:22:47

+0

我不知道用'var_export'这种方式打印的类。学到了东西。:) – deceze 2010-04-17 03:27:21