// ATUALIZAÇÃO: O primeiro comentário de @michd é o protocolo real. Sua dica tornou tudo isso inútil.
json_encode ($ array) é uma ótima maneira de converter um array ou objeto PHP em uma string para salvá-lo em um banco de dados.
$myArray = array('firstValue', 'secondValue');
$myArrayJsonEncoded = json_encode($myArray);
// results to
["firstValue","secondValue"]
// which can be converted back via
$myNewArray = json_decode($myArrayJsonEncoded);
Mas se quisermos salvar Arrays associativos …
$myAssotiativeArray = array(
'firstKey' => 'firstValue',
'secondKey' => 'secondValue'
);
$myAssotiativeArrayJsonEncoded = json_encode($myAssotiativeArray);
… Isto é o que acontece:
// {"firstKey":"firstValue","secondKey":"secondValue"}
json_decode($myAssotiativeArrayJsonEncoded)
// object(stdClass)[1]
// public 'firstKey' => string 'firstValue' (length=10)
// public 'secondKey' => string 'secondValue' (length=11)
Como o JavaScript usa objetos para “matrizes associativas”, isso faz sentido. Mas se quisermos apenas serializar nosso array PHP, precisamos usar a função serialize ()!
$myAssotiativeArraySerialized = serialize($myAssotiativeArray);
// a:2:{s:8:"firstKey";s:10:"firstValue";s:9:"secondKey";s:11:"secondValue";}
Claro, você sempre pode usar serialize (). Mas isso resulta em uma seqüência de caracteres menos legível e mais longa para matrizes não associativas.