Вот массив, который является ответом от Stripe платежного шлюза:Как получить элемент объекта из массива, содержащего объект
$response = Array ([deleteCardAccount] => Stripe\Card Object ([_opts:protected] => Stripe\Util\RequestOptions Object ([headers] => Array () [apiKey] => sk_test_erwppHN9ibdfgdfg0CesaOwnDy) [_values:protected] => Array ([id] => card_18SwerIsEZ1YjoOMVAFRLA [currency] => usd [deleted] => 1) [_unsavedValues:protected] => Stripe\Util\Set Object ([_elts:Stripe\Util\Set:private] => Array ()) ...
выше массив содержит объект «Stripe \ Card Object» и I хотите получить значение элемента [_values: protected], который является массивом.
Когда я бросил объект в массив
$nasty_array = (array)$response['deleteCardAccount'];
print_r($nasty_array);
Я получаю этот массив, который содержит ключи, которые начинаются с звездочки:
Array ([*_opts] => Stripe\Util\RequestOptions Object ([headers] => Array () [apiKey] => sk_test_wejYbwerCerwesaOefg) [*_values] => Array ([id] => card_18SwerIsEZ1YjoOMVAFRLA [currency] => usd [deleted] => 1) [*_unsavedValues] => Stripe\Util\Set Object ([_elts:Stripe\Util\Set:private] => Array ()) ...
Однако, когда я пытаюсь
print_r($nasty_array[*_opts]);
print_r($nasty_array[*_values]);
I get
error: Undefined index *_values
error: Undefined index *_opts
Вопросов:
- Почему ключи в этом массиве начинаются с звездочкой
- Как получить доступ к таким ключам без разбора
- Есть еще один способ, чтобы получить элемент объекта, который находится внутри ассоциативный массив.
Примечание: когда я вручную создаю массив с ключами, начинающимися со звездочки, то я могу получить доступ к таким ключам без проблем, но по какой-то причине я не могу получить доступ к подобным ключам при бросании opject в массив;
Разве вы не должны ставить кавычки вокруг ключей массива при доступе к нему? 'print_r ($ nasty_array ['* _ opts']);' – Osuwariboy
Без кавычек скрипт не работает и создает пустую страницу. – Jimski
Причина, по которой вы не можете получить доступ к этим свойствам, заключается не в том, что объект находится внутри массива. Причина, по которой вы не можете получить к ним доступ, заключается в том, что они [защищены] (http://php.net/manual/en/language.oop5.visibility.php), что также является причиной того, что они являются звездочками/недоступными при нажатии объект массива. –