как преобразовать массив объектов в пары значений ключей в Stack Overflow

У меня есть массив объектов, и мне нужно преобразовать в пары ключ-значение, мой код

у меня есть модель как:
модель setting.php

public function currency_info(){
$currency_info = [
['code' => 'AED', 'name' => 'United Arab Emirates Dirham'],
['code' => 'ANG', 'name' => 'NL Antillian Guilder'],
['code' => 'ARS', 'name' => 'Argentine Peso'],
['code' => 'AUD', 'name' => 'Australian Dollar'],
['code' => 'BRL', 'name' => 'Brazilian Real'],
]
}

и контроллер как:

SettingController.php

public function index()
{
$setting = new Setting();
$currency_list = $setting->currency_info();

$result = [];
foreach ($currency_list as $currency) {
$result[$currency->code] = $currency->name;
}

return $result;
}

я получаю следующую ошибку:

ErrorException (E_NOTICE) Попытка получить свойство ‘code’ не-объекта

Где я делаю неправильно и как я могу это исправить?

1

Решение

Поскольку данные, которые вы пытаетесь перебрать, являются массивом (из объекта), запись должна быть …

$result[$currency['code']] = $currency['name'];

Или, если вы хотите более короткую версию (зависит от версии PHP), используйте array_column ()

$result = array_column($currency_list, 'name', 'code');
3

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

foreach ($currency_info as $currency) {
$result[$currency['code']] = $currency['name'];
}
2

currency_info Функция возвращает массив, поэтому рассматривайте его как массив. Ты используешь $currency->code чтобы получить доступ code ключ из массива, использовать как $currency["code"] вместо.

public function index() {
$setting = new Setting();
$currency_list = $setting->currency_info();

$result = [];
foreach ($currency_list as $currency) {
$result[$currency["code"]] = $currency["name"];
}
return $result;
}
2
По вопросам рекламы [email protected]