【问题标题】:Php array from query to json is not working从查询到 json 的 PHP 数组不起作用
【发布时间】:2017-07-12 22:38:32
【问题描述】:
Array
(
[0] => Array
    (
        [ID] => 121175
        [TARIH] => Jul 11 2017 03:39:13:473PM
        [HASTANEADI] => Ö. ANKARA MEDICANA HST.
        [FIELDFORCE] => MELTEM TAŞTAN
        [NOTT] =>  
        [RAKIPFIRMA] => EVET
        [FIRMAADI] => CANBEBE ,BEPANTHOL
    )

[1] => Array
    (
        [ID] => 121156
        [TARIH] => Jul 11 2017 11:56:35:637AM
        [HASTANEADI] => BİLKENT ATATÜRK EĞT.VE ARŞ.HST.
        [FIELDFORCE] => MELTEM TAŞTAN
        [NOTT] => 65 DOĞUM
        [RAKIPFIRMA] => HAYIR
        [FIRMAADI] =>  
    )

[2] => Array
    (
        [ID] => 121149
        [TARIH] => Jul 11 2017 11:40:44:267AM
        [HASTANEADI] => Ö. PENDİK HST.
        [FIELDFORCE] => YEGANE ALBAYRAK
        [NOTT] =>  
        [RAKIPFIRMA] => EVET
        [FIRMAADI] => MOLFİX UNİBABY
    )

[3] => Array
    (
        [ID] => 121130
        [TARIH] => Jul 11 2017 10:34:41:240AM
        [HASTANEADI] => Ö. REMEDY (ÖZKAN) HST.
        [FIELDFORCE] => YEGANE ALBAYRAK
        [NOTT] =>  
        [RAKIPFIRMA] => EVET
        [FIRMAADI] => UNİBABY MUSTELA
    )

[4] => Array
    (
        [ID] => 121078
        [TARIH] => Jul 10 2017 01:39:11:250PM
        [HASTANEADI] => Ö. KORU HST. 12.KAT
        [FIELDFORCE] => MELTEM TAŞTAN
        [NOTT] => 225 DOĞUM
        [RAKIPFIRMA] => HAYIR
        [FIRMAADI] =>  
    )

   )

PHP 代码

 print_r(json_encode($query,JSON_UNESCAPED_UNICODE|JSON_PRETTY_PRINT));

这不会返回任何内容。但是,如果我 reomve json_encode 并仅使用 print_r,那么它会返回该数组。我已经尝试过其他查询,实际上看起来不错。想不通,求各位大神帮忙。谢谢!

【问题讨论】:

  • json_encode 返回一个字符串,而不是一个数组
  • 嗨@rtfm。 Json_Encode 什么都不返回。这就是问题所在。
  • 您可以使用json_last_errorjson_last_error_msg 找出编码的问题。
  • @Don'tPanic 这个函数结果 > int(5) string(56) "格式错误的 UTF-8 字符,可能编码不正确"
  • 这个问题的答案应该会有所帮助:stackoverflow.com/questions/9098507/…

标签: php arrays json multidimensional-array


【解决方案1】:

我的回忆是 php 的 json 编码对字符集很敏感,特别是强制执行字符在 UTF-8 中的(JSON 标准)。 在编码之前,您可能需要将文本重新编码为 UTF-8。

可能对 serialize() 字符串执行此操作,然后反序列化,然后 json 编码,是最快的方法。

【讨论】:

  • 嗨@rivimey 试过这个但没有用。 print_r(json_encode(unserialize(serialize($query)),JSON_UNESCAPED_UNICODE|JSON_PRETTY_PRINT));
  • 抱歉,不清楚。反序列化和序列化之间是转换编码的调用。类似:json_encode(unserialize(mb_convert_encoding(serialize($query). 'UTF-8'),JSON_UNES‌​CAPED_UNICODE|JSON_P‌​RETTY_PRINT)) - 但是您可能还需要指定当前编码。
【解决方案2】:

我通过将所有非 utf8 字符替换为 utf8 字符解决了这个问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-21
    • 1970-01-01
    • 1970-01-01
    • 2018-09-06
    • 2018-10-27
    • 1970-01-01
    • 2016-08-10
    相关资源
    最近更新 更多