В настоящее время в моей базе данных хранится ниже 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."
}
]
Iиметь функцию PHP, которая читает столбцы, похожие на массивы, и преобразует каждый столбец / строку.Я могу назвать это следующим образом:
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);
На самом деле он возвращает массив:
array:3 [▼
0 => "My name is Trevor"
1 => ""
2 => ""
]
Так почему же это выглядит как строка?