web-dev-qa-db-fra.com

Intval dans Twig Template

Le problème est très court.

J'ai un tableau avec des clés entières et un paramètre qui est la chaîne. Je veux obtenir un élément de ce tableau en utilisant ce paramètre.

Comment entrer dans Twig intval - (int)"32" of {{ variable }} Where variable == (string) "32";?

16
user3383675

Il y a des filtres en brindille. L'un d'eux est le suivant:

http://twig.sensiolabs.org/doc/filters/number_format.html

{{ variable|number_format }}

si vous faites des calculs sur une chaîne, elle sera quand même automatiquement convertie en un entier!

16
ToBe

Vous pouvez accéder à une valeur d'un tableau en utilisant une variable comme clé comme ceci: myArray[myKey]. Peu importe que les clés du tableau soient des entiers (par exemple 32) ou des chaînes correspondantes ("32"), ou si myKey est un entier ou une chaîne. Toutes ces combinaisons devraient fonctionner ( voir TwigFiddle ):

{% set myArray = {
    1:   'first',
    '2': 'second',
} %}

{% set keyOneInt = 1 %}
{% set keyOneStr = '1' %}
{% set keyTwoInt = 2 %}
{% set keyTwoStr = '2' %}

{# These all print 'first' #}
{{ myArray.1 }}
{{ myArray[1] }}
{{ myArray['1'] }}
{{ myArray[keyOneInt] }}
{{ myArray[keyOneStr] }}

{# These all print 'second' #}
{{ myArray.2 }}
{{ myArray[2] }}
{{ myArray['2'] }}
{{ myArray[keyTwoInt] }}
{{ myArray[keyTwoStr] }}

Sur la troisième ligne du code ci-dessus, la clé de chaîne '2' est en fait converti en entier 2, comme documentation PHP des tableaux état:

Les chaînes contenant des nombres décimaux valides, sauf si le nombre est précédé d'un signe + , seront converties en type entier. Par exemple. la clé "8" sera effectivement stockée sous 8 . En revanche, " 08" ne sera pas converti, car il ne s'agit pas d'un entier décimal valide.

Si, pour une raison quelconque, vous avez besoin d'un entier, vous pouvez convertir une chaîne en entier en effectuant des opérations mathématiques dessus - par exemple variable * 1 (= "32" * 1) ou variable + 0 (= "32" + 0).

5
martias