【问题标题】:I can't convert Json to string [OctoberCms]我无法将 Json 转换为字符串 [OctoberCms]
【发布时间】:2016-10-01 03:34:13
【问题描述】:

我正在尝试从输入中获取值,该输入允许用户创建任意数量的字段,这就是我在 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 为字符串,给定数组"

【问题讨论】:

    标签: php json laravel octobercms


    【解决方案1】:

    这应该有效:

    PHP

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

    EVAL.IN

    【讨论】:

    • 为什么你觉得需要将 PHP 数据结构转换为 JSON 字符串只是为了将其转换回 PHP 数据结构,以使用普通 PHP 解决它。 这些都不需要!
    【解决方案2】:

    我认为$this->ogFbAdmins 是一个数组,所以你根本不需要任何 JSON 转换。

    尝试在纯 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;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-01
      • 1970-01-01
      • 2013-08-02
      • 1970-01-01
      相关资源
      最近更新 更多