Я не могу преобразовать Json в строку [OctoberCms]

Я пытаюсь получить значение из ввода, этот ввод позволяет пользователю создавать столько полей, сколько он хочет, вот как я создал это поле в своем fields.yaml:

str_og_fb_admins:
        label: Facebook admins
        comment: Insert here the admins names
        span: left
        tab: Facebook
        type: repeater
        form:
          fields:
            str_og_fb_admins:
              label: Facebook admins
              type: text

то в моем компоненте я называю это так:

$settings = Settings::instance();
$this->ogFbAdmins = $settings->str_og_fb_admins;

но теперь я хочу получить отдельные значения из каждого единственного входа, и я не знаю, как это сделать, я пытался использовать функцию json_decode();, но она возвращает ошибку.

Если я использую echo json_encode($this->ogFbAdmins);, он возвращает

{"1":{"str_og_fb_admins":"admin1"},"2":{"str_og_fb_admins":"admin2"}}

но я хочу, чтобы он возвращался так:

admin1
admin2

Как мне сделать так, чтобы он возвращался вторым способом?

ps: ошибка, которая возвращается, когда я использую json_decode($this->ogFbadmins);, выглядит так:

«json_decode() ожидает, что параметр 1 будет строкой, задан массив»


person kraven2g    schedule 01.06.2016    source источник


Ответы (2)


Я думаю, что $this->ogFbAdmins - это массив, поэтому вам вообще не нужно преобразование JSON.

Попробуйте рассматривать его как массив в Pure PHP.

$settings = Settings::instance();
$this->ogFbAdmins = $settings->str_og_fb_admins;
foreach ($this->ogFbAdmins as $adm) {
    echo $adm['str_og_fb_admins'];
}

Теперь внутренняя структура может быть объектом, поэтому вам может понадобиться сделать

$settings = Settings::instance();
$this->ogFbAdmins = $settings->str_og_fb_admins;
foreach ($this->ogFbAdmins as $adm) {
    echo $adm->str_og_fb_admins;
}
person RiggsFolly    schedule 01.06.2016

Это должно работать:

PHP

$ogFbAdmins = json_decode(json_encode($this->ogFbAdmins), true);
foreach($ogFbAdmins as $key => $value) {
  echo $value['str_og_fb_admins'] . "\n";
}  

EVAL.IN

person Sofiene Djebali    schedule 01.06.2016
comment
Почему вы чувствуете необходимость преобразовать структуру данных PHP в строку JSON только для того, чтобы преобразовать ее обратно в структуру данных PHP, чтобы обратиться к ней с использованием обычного PHP. Ничего из этого не требуется! - person RiggsFolly; 02.06.2016