У меня есть массив вроде
$newArray = $_POST[$newId];
print_r($newArray);
он печатает как
Array ( [1] => Yes [2] => a [3] => b [4] => c [5] => d [6] => e [7] => f [8] => [9] => [10] => [11] => [12] => [13] => [14] => )
но когда я пытаюсь сохранить в db после сериализации, например
serialize($newArray)
он хранится как
s:211:"Array
(
[1] => Yes
[2] => ab
[3] => c
[4] => d
[5] => e
[6] => f
[7] =>
[8] =>
[9] =>
[10] =>
[11] =>
[12] =>
[13] =>
[14] =>
)
";
который является единственным элементом массива в БД.. как бы правильно сериализовать элемент.
Похоже на сериализацию строки, а не массива. Вы уверены, что $newArray
- массив?
Строка, возвращаемая из сериализации, начинается с 's: 211'. Это означает, что строка была передана в serialize()
. Если массив был передан в serialize()
, возвращаемая строка начиналась с 'a: 14'.
serialize()
, а не массив.
Не совсем уверен, что я понимаю вопрос, если вы не хотите сериализовать, и если вы хотите передать его из текстового поля, возможно, выполните собственный синтаксис, например: 1: a; b: 2; c: 3
затем взорвется (';', $string); цикл, который и для результата взорвется (':', $rows)
сделать разделители труднее столкнуться
explode("[[;]]", string); // 1]]:[[b[[;]]
@pradeep где вы сохраняете $newArray в текстовом поле, сохраните его с помощью серийного ввода
$arrayString = $_POST['newId'];
Вы получите сериализованный массив в $arrayString. Если вы хотите использовать этот массив перед сохранением в базе данных, используйте unserialize, иначе прямое хранилище в базе данных, поскольку оно уже сериализовано.
$array = unserialize($arrayString);
Это решит вашу проблему.
a:14:{i:1;s:3:"Yes";i:2;s:2:"ab";...}