bonsoir je travaille avec les entiers mais quand je mets strlen(1) il m'a retourné
1 je pensais qu'il allait convertir 1 en une chaîne de caractère
je voudrais savoir comment php gère les types de variables
merci
bonsoir je travaille avec les entiers mais quand je mets strlen(1) il m'a retourné
1 je pensais qu'il allait convertir 1 en une chaîne de caractère
je voudrais savoir comment php gère les types de variables
merci
PHP gère les types dynamiquement en fonction des actions que tu fais sur les variables.
Donc en utilisant strlen() sur un entier il converti l'entier en chaîne de caractère => le caractère '1'
Donc strlen(1) = 1 est on ne peux plus correct.
Oui! Mais le décryptage s'effectue dans le même script! Je vais essayer en fessant un copier-coller puis décrypter!
Je viens d'essayer et sa marche pas!
strlen calcule la taille d'une chaine de caractère.
Si un entier est passé en paramètre, il convertit cet entier en une chaîne de caractère. Je vois pas du tout en quoi strlen(1) = 1 te choque.
strlen(9567) = 4 par exemple.
PHP gère les types de variables de manière (très) souple; c'est la manière dont on les utilise qui va lui indiquer de quel type il s'agit.
Par exemple:Jusque là c'est plutôt facile.
Code : Sélectionner tout - Visualiser dans une fenêtre à part $bool=true; // peut avoir pour valeur 1 selon l'utilisation
Sinon, tu peux déclarer et définir tes variables au préalable(bonne pratique ):Enfin, si tu souhaitais convertir '1' en 'un' là il faudra te créer une méthode spécifique.
Code : Sélectionner tout - Visualiser dans une fenêtre à part var $nb_rec=0;
PHP gère déjà ça grâce a Intl
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 $fmt = numfmt_create('fr_FR', NumberFormatter::SPELLOUT); echo numfmt_format($fmt, 9567); //neuf mille cinq cents soixante-sept
Autant pour moi ! merci de l'info
stealth35, un truc que je ne connaissais pas et qui pourra bien être utile un jour ça.
ça dépend des version d'ICU, la j'etais sous win donc avec la version 3.8
chez moi sous OSX avec la version 4.6 j'ai :
on remarquera les traits d'union en plus...
Code : Sélectionner tout - Visualiser dans une fenêtre à part neuf-mille-cinq-cent-soixante-sept
J'ai activé php_intl.dll (5.3.3.0) et fait quelques essais :
Conclusion : A utiliser avec parcimonie
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 180 : cent quatre-vingts OK 190 : cent quatre-vingt-dix OK 197 : cent quatre-vingt-dix-sept OK 500 : cinq cents OK 980 : neuf cents quatre-vingts ERR 981 : neuf cents quatre-vingt-un ERR 1142 : onze cents quarante-deux ERR 6957 : six mille neuf cents cinquante-sept ERR 2000000 : deux million ERR 2000000000 : deux milliard ERR 0 : zéro OK 1 : un OK 1.3 : un virgule trois OK 1.37 : un virgule trois sept ERR
cela serai sympa stealth35 que tu testes avec ICU 4.6 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 <?php $fmt = NumberFormatter::create('fr', NumberFormatter::SPELLOUT); echo '<pre>'; echo 180 , ' : ', $fmt->format(180) , '<br />'; echo 190 , ' : ', $fmt->format(190) , '<br />'; echo 197 , ' : ', $fmt->format(197) , '<br />'; echo 500 , ' : ', $fmt->format(500) , '<br />'; echo 980 , ' : ', $fmt->format(980) , '<br />'; echo 981 , ' : ', $fmt->format(981) , '<br />'; echo 1142, ' : ', $fmt->format(1142), '<br />'; echo 6957, ' : ', $fmt->format(6957), '<br />'; echo 2000000, ' : ', $fmt->format(2000000), '<br />'; echo 2000000000, ' : ', $fmt->format(2000000000), '<br />'; echo '<br >'; echo 0.00, ' : ', $fmt->format(0.00), '<br />'; echo 1.00, ' : ', $fmt->format(1.00), '<br />'; echo 1.30, ' : ', $fmt->format(1.30), '<br />'; echo 1.37, ' : ', $fmt->format(1.37), '<br />'; ?>
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 180 : cent-quatre-vingts 190 : cent-quatre-vingt-dix 197 : cent-quatre-vingt-dix-sept 500 : cinq-cents 980 : neuf-cent-quatre-vingts 981 : neuf-cent-quatre-vingt-un 1142 : mille-cent-quarante-deux 6957 : six-mille-neuf-cent-cinquante-sept 2000000 : deux millions 2000000000 : deux milliards 0 : zéro 1 : un 1.3 : un virgule trois 1.37 : un virgule trois sept
Partager