[php] Optimisation

Voici un bout de mon code :

$r8 = 8.0;

$docs = number_format($r8*5, 1);

if (preg_match("![0]$!", $docs)) {
$docs = preg_replace("![0]$!", '', $docs);
if (preg_match("![.]$!", $docs)) { $docs = preg_replace("![.]$!", '', $docs); }
}

je suppose que l’on peut l’optimiser.

J’ai déjà essayer ça :

$r8 = 8.0;

$docs = number_format($r8*5, 1);

if (preg_match("![.0]$!", $docs)) { $docs = preg_replace("![.0]$!", '', $docs); }

mais ca ne prenait pas en compte le .

Tu veux faire quoi exactement?

Un peu d’optimisation, ca serait pas plus rapide en une seule commande ?? :

if (preg_match("![0]$!", $docs)) {
$docs = preg_replace("![0]$!", '', $docs);
if (preg_match("![.]$!", $docs)) { $docs = preg_replace("![.]$!", '', $docs); }
}

Non, tu veux faire quoi == que doit faire ton code?

Rien des optimisations, et pire, si y a une autre façon de faire, on peut mais encore faut-il s’avoir quels sont tes buts avec ton code

A ok, j’avais pas compris, désolé.
Mon code sert à faire une moyenne, la valeur de départ est $R

le nombre de départ est $R, sa valeur mini est de 0 et sa valeur max est de 2
il est multiplier par 5 car je veux une moyenne sur 10

j’utilise la fonction number_format pour arrondir le résultat à 1 chiffre derrière la virgule
le résultat est stocké dans la variable $docs

$docs = number_format($R*5, 1);

ensuite avec une expression régulière je recherhce si $docs se termline par .0
si c’est le cas, je supprime le . et le 0 de la variable $docs

1) Voici ce qui doit se passer
$R = 1.56565656
— fonction number format et multiplication —
$docs = 7.8
– experssion régulière —
– comme $docs ne se termine pas par .0 on ne change rien —

2) si maintenand :
$docs = 7.0
– experssion régulière —
– comme $docs se termine pas par .0 on supprime le . et le 0 —
$docs = 7

Et round ne te convient pas?

si il fait la même chose plus rapidement, ca me dérange pas.

bah en fait il ne me convient pas car je suis en php 3 et pas php 4

je ne t’aiderai pas plus alors. Si tu ne peux pas mettre à jour ta version de php, c’est ton problème. Mais je me refuse désormais à aider toute personne sous php3. Faut pas pousser, php5 est sorti depuis pas mal de temps… Alors être encore en php3… :slight_smile:

(sinon round(x, y) = floor(x*pow(10, y))/pow(10,y) ou un truc dans le genre.