Таким образом, я должен закодировать массив в PHP и сохранить его в простом тексте в базе данных MySQL, мой вопрос, должен я использовать сериализировать () или json_encode ()? Каковы преимущества и недостатки каждого из них?
Я думаю, что любой из них сделал бы в этой ситуации. Но какой Вы предпочли бы и почему? Если это для чего-то другого, чем массив?
Главное преимущество serialize
: он специфичен для PHP, что означает, что он может представлять типы PHP, включая экземпляры ваших собственных классов - и вы получите обратно ваши объекты, все еще экземпляры ваших классов, при разгруппировке данных.
Главное преимущество json_encode
: JSON не специфичен для PHP: есть библиотеки для чтения/записи на нескольких языках - это означает, что он лучше, если вам нужно что-то, чем можно манипулировать с помощью другого языка, а не PHP.
Строку JSON также легче читать/писать/изменять вручную, чем сериализованную.
С другой стороны, поскольку JSON не является специфичным для PHP, он не знает о вещах, которые специфичны для PHP - например, о типах данных.
Пара попутных замечаний:
where
, ни обновлять их без вмешательства PHP... Если ваши данные никогда не будут покидать ваше PHP-приложение, я рекомендую serialize (), потому что он предлагает множество дополнительных функций, таких как __sleep () и __wakeup ( ) для ваших объектов. Он также восстанавливает объекты как экземпляры правильных классов.
Если вы передадите сериализованные данные другому приложению, вы должны использовать JSON или XML для совместимости.
Но сохранить сериализованный объект в базе данных? Может тебе стоит подумать об этом еще раз. Позже это может стать настоящей проблемой.
Во-первых, сериализация массива или объекта и сохранение его в базе данных обычно запах кода. Иногда люди заканчивают тем, что помещают список, разделенный запятыми, в столбец, а затем попадают во всевозможные проблемы, когда позже обнаруживают, что им нужно сделать запрос по нему.
Так что подумайте об этом очень внимательно, если это такой ситуация.
Что касается различий. Сериализация PHP, вероятно, более компактна, но может использоваться только с PHP. JSON является кроссплатформенным и, возможно, более медленным для кодирования и декодирования (хотя я сомневаюсь в этом).