web-dev-qa-db-fra.com

Quelles sont ces entrées dans la base de données? Ressemble à JSON

Je me demande donc depuis un certain temps en quoi consistent ces entrées et ce qu'elles font, ainsi que leur format. Ils ressemblent à JSON mais ne sont certainement pas JSON.

a:1:{s:12:"jetlocations";a:2:{s:5:"label";s:12:"JetLocations";s:4:"type";s:6:"editor";}}

J'ai cherché à savoir ce que cela pouvait être, mais je n'ai rien trouvé.

6
Yamaha32088

C'est un Serialized Array qui transforme un tableau en une simple chaîne de caractères pour qu'il puisse être inséré dans une base de données (vous ne pouvez pas simplement insérer des tableaux dans une base de données tels quels).

Pour plus d'informations, vous pouvez consulter la documentation PHP pour serialize()

Il existe également certaines fonctions WordPress qui font la même chose: maybe_serialize() et maybe_unserialize() .

Cela se produit généralement (automatiquement) chaque fois que vous passez un tableau à la fonction update_post_meta() . Afin de récupérer le tableau, vous pouvez utiliser get_post_meta() et transmettre une valeur vraie à $single.

$ single

(boolean) (facultatif) Si défini sur true, la fonction renvoie un seul résultat, sous forme de chaîne. Si la valeur est false ou non définie, la fonction renvoie un tableau des champs personnalisés. Cela peut ne pas être intuitif dans le contexte des tableaux sérialisés. Si vous extrayez un tableau sérialisé avec cette méthode, vous voulez que $ single soit vrai afin de récupérer un tableau non sérialisé. Si vous passez false ou si vous le laissez de côté, vous aurez un tableau de 1 et la valeur à l'index 0 sera la chaîne sérialisée.

Par défaut: false

get_option() retournera également un tableau non sérialisé prêt à être utilisé par défaut.


Si nous décomposons la chaîne, elle ressemble à ceci:

a:1:{s:12:"jetlocations";a:2:{s:5:"label";s:12:"JetLocations";s:4:"type";s:6:"editor";}}

a:1:{} = Spécifie qu'il y a un tableau avec un nombre de 1

s:12: = Le seul index du tableau est une chaîne de 12 caractères - "jetlocations"

a:2: = jetlocations contient alors un tableau avec le nombre de 2

s:5: = Le premier index est une chaîne de 5 caractères - "label"

s:12: = La valeur de "label" est également une chaîne de 12 caractères - "JetLocations"

s:4: = Notre deuxième index est une chaîne de 4 caractères logn - "type"

s:6: = La valeur de "type" est une chaîne de 6 caractères - "éditeur"

Donc, si nous mettons tout cela ensemble, nous obtenons un tableau qui ressemble à ceci:

array(
    'jetlocations' => array(
        'label' => 'JetLocations',
        'type'  => 'editor'
    )
);
7
Howdy_McGee