gocardless — PHP читает первый элемент в массиве объектов

У меня есть мой код на PHP, который возвращает этот массив данных:

GoCardlessPro\Core\ListResponse Object
(
[records] => Array
(
[0] => GoCardlessPro\Resources\Mandate Object
(
[model_name:protected] => Mandate
[created_at:protected] => 2017-04-01T16:49:09.642Z
[id:protected] => ID001
[links:protected] => stdClass Object
(
[customer_bank_account] => CB001
[creditor] => CR001
[customer] => CU001
)

[metadata:protected] => stdClass Object
(
)

[next_possible_charge_date:protected] => 2017-04-06
[payments_require_approval:protected] =>
[reference:protected] => RE001
[scheme:protected] => bacs
[status:protected] => active
[data:GoCardlessPro\Resources\BaseResource:private] => stdClass Object
(
[id] => 123
[created_at] => 2017-04-01T16:49:09.642Z
[reference] => RE001
[status] => active
[scheme] => bacs
[next_possible_charge_date] => 2017-04-06
[payments_require_approval] =>
[metadata] => stdClass Object
(
)

[links] => stdClass Object
(
[customer_bank_account] => 001
[creditor] => CR001
[customer] => CU001
)

)

[api_response] =>
)

)
)

Я хочу иметь возможность прочитать идентификатор первого элемента вrecords массив.

Эти данные содержатся в переменной с именем $GC_Mandate;

Я попробовал это:

echo $GC_Mandate->records->{0}->id;

echo $GC_Mandate->records->0->id;

echo $GC_Mandate->records->[0]->id;

$GC_Mandate = $GC_Mandate->records;
echo $GC_Mandate->{0}->id;

Но никто не вернет данные

1

Решение

Чтобы получить первую запись, вам нужен следующий синтаксис: $GC_Mandate->records[ 0 ],

Тем не менее, этот объект является GoCardlessPro\Resources\Mandate объект и его член id защищен1, поэтому нам нужно знать интерфейс GoCardlessPro\Resources\Mandate (его публичные методы1), чтобы узнать, можем ли мы каким-то образом получить значение id,

Мое предположение будет getId(), так что полный синтаксис станет

$GC_Mandate->records[ 0 ]->getId()

Но это только предположение. Вы должны изучить документацию / определение класса GoCardlessPro\Resources\Mandate, чтобы быть уверенным, если вы можете получить id,


Оказывается (при условии, что я ссылаюсь на правильный репозиторий github) вы можете сделать:

$GC_Mandate->records[ 0 ]->id

поскольку GoCardlessPro\Resources\Mandate продолжается GoCardlessPro\Resources\BaseResource, который выставляет защищенных членов через GoCardlessPro\Resources\BaseResource::__get()2.



1. видимость в PHP
2. магические методы в PHP

1

Другие решения

Я не могу комментировать, поэтому я думаю, что мне придется отправлять.

Вы должны попытаться print_r($GC_Mandate); и посмотри, что он выдает, а потом иди оттуда.

0

Пытаться $GC_Mandate->records[0]->__get('id')

0

он будет возвращать все данные .. для perticulat данных поместите это в цикл foreach

 print_r($GC_Mandate['records']);
0
По вопросам рекламы [email protected]