JSON 结构改变,破坏方法

JSON Structure changed, breaks methods

目前,我的数据库中存储了以下JSON:

{
    "1": [
        {
            "row": "My name is Trevor"
        }
    ],
    "2": [
        {
            "row": "Hey there! Some other text."
        }
    ],
    "3": [
        {
            "row": "And more."
        }
    ]
}

现在,我使用的第三方 API 已将其输出格式更改为:

[
   {
      "0":"My name is Trevor"
   },
   {
      "0":"Hey there! Some other text."
   },
   {
      "0":"And more."
   }
]

我有一个 PHP 函数,它读取类似数组的列并转换每个 column/row。我可以这样称呼它:

public function apply(array $table) : array
{
    return $this->applyRule($table);
}

这叫做:

public function applyRule(array $table): array
{
    $out = [];
    foreach ($table as $col => $rows) {
            $out[$col] = array_map([$this, 'rule'], $rows);
    }

    return $out;
}

其中最终调用的是解析规则,像这样:

public function rule($content) : array
{
    return preg_replace($this->pattern, $this->replacement, $content);
}

但是,上面的 运行 给出了以下错误:

regexTextReplace::rule() must be of the type array, string returned

我怀疑是由于 JSON 结构的变化,我的解析函数不再起作用。

我不确定需要更改什么 - 有人可以帮助我吗?

编辑:

所以看看下面的答案,添加 [$rows] 而不是 $rows 修复了错误,但最终似乎创建了一个嵌套数组。

如果我像这样做一个死转储:

dd($rows);

它实际上 return 一个数组:

array:3 [▼
  0 => "My name is Trevor"
  1 => ""
  2 => ""
]

那么为什么它被看作是一个字符串呢?

您可以将 $rows 作为数组发送到 rule() 函数,只需将其包装在 []:

array_map([$this, 'rule'], [$rows]);

然后该函数将接收一个数组,而不是一个字符串。

否则,您可以重构代码并改用字符串,但我看不出有多大优势。