无法在JSON中观察数组值

时间:2018-01-23 14:03:40

标签: php arrays json

我有一个名为resul的字符串数组,我想将其转换为JSON。我尝试了两种方法来实现它。

第一个我使用以下命令:

$this -> resul = json_encode(utf8_encode($this -> sqry -> fetchAll(PDO::FETCH_ASSOC)));

但我有警告:

  

警告:utf8_encode()要求参数1为字符串,给定数组为

所以我知道我必须将这个数组转换成字符串。这是实现目标的第二种方式。那是我使用的代码:

$this -> resul = $this -> sqry -> fetchAll();

for($i=0;$i<count($this -> resul);$i++)
{
    $this -> fresul = $this -> fresul . $this -> resul[$i]["nombre"];
    $this -> fresul = $this -> fresul . $this -> resul[$i]["descripcion"];
    $this -> fresul = $this -> fresul . $this -> resul[$i]["precio"];
    $this -> fresul = $this -> fresul . $this -> resul[$i]["foto"];
}

$this -> fresul = utf8_encode($this -> fresul);

header('Content-type: application/json');
echo "</br>" . json_encode($this -> fresul);

fresul是数组resul的字符串。运行脚本后,我收到错误:

  

SyntaxError:JSON.parse:第1行第1列的意外字符   JSON数据

但是如果我删除标题我只有一个字符串,但没有错误或警告。

如何将此数组转换为JSON?

感谢。

1 个答案:

答案 0 :(得分:0)

如果您的数据库未返回UTF-8编码文本,请调整数据库以返回UTF-8编码文本。那你就不需要utf8_encode。事实上,每当你想要使用utf8_encode时,就会发现你的编码处理出现了其他问题。

对于PDO:

// somewhere:
$this->db = new PDO('mysql:...;charset=utf8mb4');

// then:
$this->resul = json_encode($this->sqry->fetchAll(PDO::FETCH_ASSOC));

Etvoilà,数据库返回UTF-8编码数据,可以直接进行JSON编码。