web-dev-qa-db-fra.com

Comment récupérer la valeur stockée dans un tableau multi-dimensionnel et résumer les entrées?

J'essaie de récupérer des valeurs multidimensionnelles stockées dans user_meta où la clé méta est my_posts et le meta_value est:

a: 3: {i: 0; s: 2: "23"; i: 1; s: 2: "20"; i: 2; s: 1: "9";}

Quelque part dans la page d'administration, je souhaite afficher la somme des publications sélectionnées qui sont stockées dans la valeur ci-dessus ....

1
user3279

La valeur est sérialisée. Si vous récupérez les métadonnées avec les fonctions WordPress, vous obtiendrez ces données non sérialisées et vous pourrez les parcourir (elles ressemblent à un tableau).

$somevar = get_user_meta( '99999', 'your-key', true );

Comme pour les options de WordPress, les méta de l'utilisateur sont sérialisées lorsqu'il s'agit d'un tableau ou d'un objet, les valeurs uniques sont stockées sous forme de chaîne (non sérialisées).

Appelez get_user_meta et vous récupérerez un tableau de données au lieu d’une chaîne sérialisée. Vous n’avez pas besoin de vous sérialiser ni de vous désérialiser. Les méta-fonctions WordPress s’occupent de cela pour vous, en utilisant maybe_serialize et maybe_unserialize lors de l’enregistrement et de la définition de méta.

Ceci est similaire à la gestion des options dans WP et fait à peu près la même chose, je l’ai couvert en répondant " Tableau des options du plug-in, les données sont-elles sérialisées "..

Pour répondre plus directement à la question, pour additionner les valeurs du tableau, utilisez array_sum, comme suit .. (basé sur l'exemple var précédent)

if( !empty( $somevar ) )
    $sum = array_sum( $somevar );

Ou..

$sum = 0;
if( !empty( $somevar ) ) {
    foreach( $somevar as $int )
        $sum = $sum + $int;
}

En supposant qu'il s'agisse d'un simple tableau de paires clé => valeur, l'une ou l'autre approche devrait fonctionner.

6
t31os

Solution PHP:

$tmp = 'a:3:{i:0;s:2:"23";i:1;s:2:"20";i:2;s:1:"9";}';
echo sum_array(unserialize($tmp));
1
Kaaviar

Aussi ... transformez votre méta-valeur en tableau et examinez la fonction wp_count_posts() et son utilisation dans wp-admin/edit-form-advanced.php pour un exemple.

0
wyrfel