не может десериализовать - PHP 7.1.22 - PullRequest
0 голосов
/ 16 мая 2019

Я сериализирую ассоциированный массив, используя сериализацию ядра PHP

$additional_email = serialize($customer->getData('addtionalemail'));

После этого сохранить это значение в базе данных Mysql

s:209:"a:1:{i:0;a:1:{i:0;a:5:{s:16:"additional_email";s:13:"test@test.com";s:9:"record_id";s:1:"0";s:26:"apply_to-prepared-for-send";a:1:{i:0;s:1:"0";}s:8:"apply_to";a:1:{i:0;s:1:"0";}s:10:"initialize";s:4:"true";}}}";

Когда я не сериализировал вышеуказанное значение, оно не работало. Я использовал такие решения, как base_64_encode и decode, перед сериализацией и десериализацией, но это не решает проблему, также использовал решения preg_match, но не повезло.

Я использую unserialize online tool , который также не сможет десериализовать вышеуказанную строку. Что-то не так с сериализованным значением, кто-нибудь может указать мне правильное направление?

1 Ответ

1 голос
/ 16 мая 2019

Похоже, у вас есть как-то serialize d значение дважды. Запуск unserialize дважды отменяет это:

print_r(unserialize(unserialize('s:209:"a:1:{i:0;a:1:{i:0;a:5:{s:16:"additional_email";s:13:"test@test.com";s:9:"record_id";s:1:"0";s:26:"apply_to-prepared-for-send";a:1:{i:0;s:1:"0";}s:8:"apply_to";a:1:{i:0;s:1:"0";}s:10:"initialize";s:4:"true";}}}";')));

Выход:

Array (
  [0] => Array (
    [0] => Array (
      [additional_email] => test@test.com
      [record_id] => 0
      [apply_to-prepared-for-send] => Array (
         [0] => 0 
      )
      [apply_to] => Array (
        [0] => 0
      )
      [initialize] => true
    )
  )
)

Демонстрация на 3v4l.org

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...