为什么一些字符串/文本不能捕获PHP json_decode


Why some string/text can not be caught with PHP json_decode?

我尝试从数据库中获取名称和地址以及其他数据,其中名称和地址属性为文本格式,而其他属性为varchar格式。我不明白为什么有些名字和地址在数据库中不能被捕获。在大约5000条记录中,大约有300条记录的名称和地址无法在我的程序中捕获。经过调查,我找到了一些以空白开头的名字和地址。所以在我去掉那些空白之后,它就可以正常工作了。但对于其他人,我就不明白了。看起来只是普通的短信。代码如下:

$hasil_query1= json_encode($data->getData($query));
$obj1 = json_decode($hasil_query1,true);
$name=$obj1[0]['name'];
$address=$obj1[0]['address'];

当我打印$name或$ address时,其中一些没有出现(没有被捕获)。但是当我使用这段代码,而不是上面的代码,它工作得很好

$result = mssql_query($query);
while($row = mssql_fetch_array($result))
{
$name=$row['name'];
$address=$row['address'];
}

请帮我理解一下,因为我只是现在才看到它。

试试这个

$hasil_query_baru = array();
$hasil_query1= $data->getData($query);
foreach($hasil_query1 as $row){
    $hasil_query_baru[] = array_value($row);
}
$hasil_query1 = json_encode($hasil_query_baru);

...

var_dump可能有助于理解问题。

var_dump($data->getData($query));

我发现答案从php json_encode()显示's null而不是文本

"json_encode期望数据中的字符串被编码为UTF-8。

如果它们还不是"

将它们转换为UTF-8 "

~ phihag

感谢死亡外科医生给我的链接。