web-dev-qa-db-fra.com

Dans les champs personnalisés, array_values ​​() affiche "Array".

À partir du code ci-dessous, le résultat est

<meta mytags="tags" content="Array" />

mais si je répète la array_values($field->rawvalue), elle affichera toutes les valeurs remplies du tableau.

Est-ce que quelqu'un peut indiquer ce que je fais mal?

if ($field->id === '10') {
    //Makes sure the field is not empty
    if (!empty($field->rawvalue)) {
        //Inserts the field content with markup into the HTML head
        $customField = '<meta mytags="' . $field->label . '" content="' . array_values($field->rawvalue) . '" />';
        $document->addCustomTag($customField);
    }
    continue;
}
1
seefah

PHP array_values retourne un tableau - c'est pourquoi vous obtenez "tableau" imprimé. Très probablement si vous traitez avec un tableau et voulez en faire une chaîne, alors vous êtes après implode($separator, $array);http://php.net/manual/en/function.implode.php =

Par exemple, pour une chaîne séparée par des virgules, vous pouvez faire:

implode(',', $field->rawvalue);

Mais vous devez préciser le type de votre $field->rawvalue.

2
FFrewin

Pour construire vos données de balise au format pouvant être répercuté dans le code HTML, vous devez convertir les données en chaîne.

array_values() ne convertit pas un tableau en chaîne, il réindexe (attribue de nouvelles clés numériques à partir de 0) le tableau.

En supposant que vous souhaitiez générer une chaîne avec des valeurs séparées par des virgules, vous devriez utiliser implode(',', $field->rawvalue) comme ceci:

if ($field->id === '10' && !empty($field->rawvalue)) {
    //Inserts the field content with markup into the HTML head
    $customField = '<meta mytags="' . $field->label . '" content="' . implode(`,`, $field->rawvalue) . '" />';
    $document->addCustomTag($customField);
}

Si, pour une raison quelconque, les valeurs de votre tableau comportent des guillemets, vous devrez les échapper après leur implosion.

p.s. Je ne suis pas sûr que continue soit nécessaire dans votre boucle (cela n'a pas de sens s'il n'y a plus de lignes de code après le bloc if de votre boucle). D'ailleurs, je ne sais même pas si cette boucle est nécessaire - il faudrait que je voie un peu plus de code pour l'examiner correctement.

1
mickmackusa