储存 PHP 数组的首选方法(json_encode 还是 serialize)?\n


这取决于手头的需求。

除非满足以下条件,否则 JSON 比 PHP 序列化更快:

  • 储存深度嵌套的数组。
  • 储存的对象需要反序列化为正确的类。
  • 交互涉及不支持 json_decode 的旧版 PHP。

下面的代码行可用于使用 json_encode 储存 PHP 数组:

json_encode($array, JSON_UNESCAPED_UNICODE)

JSON 不会在任何地方储存对象的原始类,但可以将其还原为属于 stdClass 的类实例。

为什么使用 json_encode 而不是序列化?

  • 与序列化相比,JSON 的可移植性要高得多。
  • 使用 JSON 无法利用 __sleep() 和 __wakeup() 的特性。
  • 默认情况下,公有属性会使用 JSON 序列化。(如果 PHP 版本 >=5.4,则可实现 JsonSerializable 以更改行为)。

示例

 在线示例

<?php
   // Array is declared
   $value = array(
      "name"=>"name_me",
      "email"=>"myemail.com"
   );
   // json_encode() function is used
   $json = json_encode($value);
   // Displaying output
   echo($json);
?>

输出

将产生以下输出:

{"name":"name_me","email":"myemail.com"}

更新于:2019-12-30

409 次浏览

开启你的 职业生涯

通过完成课程获得认证

开始
广告