web-dev-qa-db-fra.com

Comportement incohérent de number_format

J'essaie de formater un nombre dans une cellule de tableau avec des séparateurs de virgule entre des milliers. Le numéro provient d'un champ personnalisé généré dans le plug-in Advanced Custom Fields, où il doit être un nombre.

(Mais j'ai aussi essayé de simplement entrer le numéro directement dans les exemples ci-dessous.)

J'obtiens la valeur numérique correcte, mais le formatage ne fonctionne pas. De plus, j'obtiens des résultats différents avec number_format à l'intérieur d'une cellule de tableau et à l'extérieur d'une cellule.

Mon numéro est le 429000, récupéré par the_field ('price').

Voici ce que j'ai essayé à l'intérieur de la cellule:

<td class="pl-property-price"><?php number_format( the_field('price')); ?> </td>
<td class="pl-property-price"><?php number_format((int) the_field('price')); ?> </td>
<td class="pl-property-price"><?php number_format( intval(the_field('price'))); ?> </td>
<td class="pl-property-price"><?php number_format( the_field('price'), 0, ".", ","); ?> </td>

et quelques autres variations.

Peu importe ce que je fais, il génère 429000 sans séparateur de virgule.

Maintenant, si j'essaye de faire écho à la valeur en dehors de la table, en utilisant un code comme celui-ci et toutes les variations similaires à celles ci-dessus en utilisant

<?php echo number_format(the_field('price')); ?>

Je reçois 4290000, ce qui ajoute un zéro supplémentaire.

Je suis perplexe.

1
user41091

On dirait que la fonction que vous utilisez est la the_field fonction de ACF qui est une fonction qui sort une chaîne pour que le dosage de formatage number_formatt affecte la sortie.

Ce code:

 <?php echo number_format(the_field('price')); ?>

L'écho n'imprime vraiment rien, la fonction the_fields imprime la sortie, c'est pourquoi la fonction number_format n'a aucun effet sur la sortie.

Essayez d’obtenir le champ via une fonction différente get_field par exemple, ou vous pouvez ajouter à la fonction the_fields un argument $ format_valeur comme vous avez pu le voir dans docs .

Cela devrait fonctionner:

<?php echo number_format( get_field( 'price' ) ); ?>
1
BenB
  • get_field(): renvoie la valeur d'un champ spécifique.
  • the_field(): Affiche la valeur d'un champ spécifique.

Le bon extrait ressemble à ceci:

<?php echo number_format( get_field( 'price' ) ); ?>
0
Marcos Nakamine

Dans votre cas, vous devez utiliser la fonction get_field au lieu de the_field.

the_field renvoie la valeur, alors que get_field renvoie une valeur dans laquelle vous pouvez transmettre la valeur de paramètre au number_format.

<?php echo number_format(get_field('price')); ?>

Vous pouvez également en apprendre plus sur number_format

0
Den Isahac