Как получить ответ ассоциативного массива заряда в PHP - PullRequest
0 голосов
/ 07 ноября 2018

Я пытаюсь получить сведения о клиенте из поручителя с помощью его ключа API, ответ находится в ассоциативном массиве. Я пытался получить значения, используя следующие коды $ all содержит ответ

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

print_r ($ клиент);

//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 голосов
/ 09 ноября 2018

В библиотеке Chargebee php есть простые способы доступа к атрибутам каждого ресурса.

Вы можете получить доступ к атрибутам клиента, как показано ниже:

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

Точно так же вы можете получить доступ к другим атрибутам ресурса.

Вы также можете получить всю информацию о клиенте в виде строки json:

    $json = $customer->toJson();
    print($json);
0 голосов
/ 07 ноября 2018

Поскольку свойства, которые вы хотите получить, имеют защищенный доступ, вы не можете сделать это напрямую. Однако в PHP есть 2 способа сделать это.

Один должен привести объект к массиву, или второй должен использовать 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
}
...