Как: Реагировать на сериализацию многомерного массива и десериализацию его в PHP - PullRequest
0 голосов
/ 13 января 2019

- Редактировать 2 -

Я ставлю это сверху, так как сужаюсь к проблеме.

Я отправляю эту строку, вложенную в больший массив, объединяющий все атрибуты для короткого кода WP. Проблема лежит в квадратных скобках.

{“key”:”post_type”,”value”:[“news”,”agenda"]}

Мой лучший вопрос - мне нужно убрать квадратные скобки или искать замену с обеих сторон и использовать заполнитель, такой как (squareBracketOpen).

Или есть другой способ сериализации / десериализации массива?

Проблема лежит в квадратных скобках.

- / Редактировать 2 -

Я работаю в React и PHP и пытаюсь добавить что-то поверх плагина Wordpress. При этом используется React, с которым я совсем не знаком:)

Прямо сейчас у меня нулевое знание о реакции, но я постепенно заставляю вещи работать. Есть одна вещь, хотя я не знаю, как решить. Я начну с вопроса:

Как сериализовать многомерный массив в React и десериализовать его в PHP? Если в любом случае я не смогу перевести мой вопрос, позвольте мне сформулировать мою цель следующим образом: У меня есть многомерный массив в React, и я хочу передать его в PHP и использовать его как многомерный массив.

Это будет массив:

Array {
[key] => “post_type”,
[value] => Array {
    [0] => “news”,
    [1] => “agenda”
    }
}

В качестве теста в React я делаю

console.log(JSON.stringify(post_type));
// expected return {“key”:”post_type”,”value”:[“news”,”agenda"]}

- edit-- Я заметил, что он добавляет [ ] скобки как многомерные. Это не правильно, верно? - конец редактирования -

Насколько мне известно, хорошо, правда?

Теперь в PHP я пытаюсь десериализовать его с помощью:

var_dump( unserialize ($postType ) );
// result: bool(false)

Так что я, очевидно, что-то делаю не так. :) Кто-нибудь знает, как правильно сериализовать многомерный массив в React и десериализовать его в PHP в массив?

Ответы [ 2 ]

0 голосов
/ 13 января 2019

Хорошо, наконец-то. То, что я в итоге сделал, на стороне JS / реагировать

  1. Сериализация массива в строку. с JSON.stringify ()
  2. URI закодировал строку. с encodeURIComponent ()
  3. И на стороне php перевернул его.

JS / React

let post_type_encoded = encodeURIComponent( JSON.stringify( post_type ) )    

PHP

$postType = json_decode ( urldecode( $postTypeEncoded ) );
0 голосов
/ 13 января 2019

Вам нужно будет сделать json_decode($post_type, true) для его преобразования в многомерный массив.

Обратите внимание, что второй параметр true - это то, что преобразует его в ассоциативный массив.

По сути, вы будете делать JSON.stringify, а затем json_decode(), потому что это работает в php

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