如何在PHP中获取Chargebee关联数组响应

时间:2018-11-06 21:47:25

标签: php arrays associative-array

我正在尝试使用其api密钥从Chargebee获取客户详细信息,响应位于关联数组中。我尝试使用以下代码获取值 $ all 包含响应

foreach($all as $entry){
    $customer[] = $entry->customer();
         $card = $entry->card();
}

print_r($ customer);

//try 1
    foreach($customer as $value){
      print_r($value->allowed:protected]);
    } 

//try 2
    foreach($customer as $key->$value){
          print_r($value->allowed:protected]);
        } 

我的数组采用以下方式

Array
(
    [0] => ChargeBee_Customer Object
        (
            [allowed:protected] => Array(
                    [0] => id
                    [1] => firstName
                    [2] => lastName
                    [3] => email
                    [4] => phone
                    [5] => company
             )
             [_values:protected] => Array
                ( [first_name] => ashutosh
                    [email] => ashutosheve@gmail.com)
             [_data:protected] => Array
               (
                    [firstName] => ashutosh
                    [email] => ashutosheve@gmail.com
                    [autoCollection] => on
                    [netTermDays] => 0
               )
          )}

不断抛出错误

PHP Parse error:  syntax error, unexpected ':', expecting ',' or ')'

如何从此类数组获取值,请帮助。

2 个答案:

答案 0 :(得分:0)

由于您要获取的属性具有受保护的访问权限,因此无法直接执行。但是,PHP有两种方法可以做到这一点。

一种是将对象转换为数组,另一种是使用ReflectionClass

$reflect = new ReflectionClass('ChargeBee_Customer'); // create reflection class
$p = $reflect->getProperty('allowed'); // get protected property allowed

$p->setAccessible(true); // set it accessible

foreach ($customer as $value){
      var_dump($p->getValue($value)); //get property value on the object using reflection
}

答案 1 :(得分:0)

Chargebee php库具有访问每种资源属性的简单方法。

您可以如下所示访问客户的属性:

    $customer = $all->customer();
    print($customer->id);
    print($customer->firstName);

类似地,您可以访问其他资源属性。

您还可以将整个客户详细信息作为json字符串获取:

    $json = $customer->toJson();
    print($json);