[RESOLU] Format pour max() ?

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Format pour max() ?

Re: [RESOLU] Format pour max() ?

par achaab » 24 juil. 2014, 23:54

Problème résolu en forçant la création du tableau dès le début (le problème venait bien du fait que toutes les clés étaient identiques)

Re: Format pour max() ?

par achaab » 24 juil. 2014, 21:18

Ou dans ce que j'ai écris, tu lis que je n'ai pas testé ton code ? Parce que non seulement je l'ai testé (j'étais tout content de voir que le problème était contourné vu qu'on utilisait plus la fonction max qui m'embêtait), mais surtout c'est en l'appliquant à mon code que j'ai vu que ça ne marchait pas avec mes données alors que ça marchait avec le tableau que tu mettais dedant, ce qui m'a permis de cibler le probleme ^^

Pour ce qui est du var_dump($dps), le résultat a été publié dans le tout 1er message que j'ai fais sur ce sujet :
Au cas ou :
- Si je fais un var_dump sur ma variable DPS, j'obtiens ceci :
Image
Maintenant s'il faut une page pour mieux voir, en voici une : http://achaab77.free.fr/test3.php (encore une fois, il faudra stop l'exécution de la page pour éviter de planter le navigateur).

Re: Format pour max() ?

par sirakawa » 24 juil. 2014, 20:50

Si tu avais testé ce que j'ai envoyé tu aurais constaté que c'est un code qui fait exactement ce que tu demandes. appliqué à un tableau de valeurs
Maintenant j'ignore complètement comment est faite ta variable DPS: un var_dump($dps) serait plus utile que echo($dps); on en connaîtrait le type (les valeurs on s'en moque totalement)

Re: Format pour max() ?

par achaab » 24 juil. 2014, 20:04

Cela ne marche pas, mais je pense que ça m'a permis de trouver la cause du problème :
Lorsque je fais ceci :
vals = array($dps);
Je m'attends a trouver quelque chose du genre
Array (
[0] => 1
[1] => 3000
[2] => 281
[3] => 25
)
Au lieu de quoi, je me retrouve avec ceci :
Array (
[0] => 1
[0] => 3000
[0] => 281
[0] => 25
)
Une idée pour forcer la clé a prendre une bonne valeur ? xD

Re: Format pour max() ?

par sirakawa » 24 juil. 2014, 17:52

Alors ceci:
<?PHP
$vals = array(1, 3000, 281, 25);
$max = 0;
foreach ($vals as $val)
{
	$max = ($val > $max) ? $val : $max;
}
print "<hr> $max";

?>

Re: Format pour max() ?

par achaab » 24 juil. 2014, 13:03

Je veux juste obtenir le chiffre du meilleur DPS.

Une fois que j'ai ce chiffre, j'en sers pour lui dire de ne m'afficher que les combinaisons supérieure ou égale avec un :
if ($dps >= mon_chiffre_du_plus_gros_dps)
On passe donc de ça :

http://achaab77.free.fr/test2.php (arrête le chargement de la page en appuyant sur echap dès que tu vois apparaitre quelque chose, parce que si tu le laisse tout charger, ça va surement planter ton navigateur)

à ça :

http://achaab77.free.fr/test.php (pas besoin de l'arrêter cette fois)

Dans le 2e lien, j'ai manuellement indiqué une valeur pour "mon_chiffre_du_plus_gros_dps" (que j'ai trouvé a partir du 1er lien).

L'idée c'est donc uniquement de trouver quel est le chiffre le plus gros. Une fois que je l'ai, je peux m'en servir ailleurs

Re: Format pour max() ?

par sirakawa » 24 juil. 2014, 12:50

Je croyais que le but était d'obteni les n meilleures; pour cela il faut trier un tableau. MAX ne donnera que la plus grande de toutes les valeurs qu'on lui soumettra.

Une fois obtenu ton tableau trié, il n'est pas difficile de n'en garder que les n dernières si tu te sers de sort ou les n premières si tu te sers de asort.
On peut aussi imaginer un algorithme qui constitue le tableau trié au fur à mesure de la consultation des données.

Re: Format pour max() ?

par achaab » 24 juil. 2014, 12:42

Merci à vous deux pour les réponses ^^


@Genova : Exacte je l'avais effacé au moment de créer la "démo" pour ne pas avoir de message d'erreur.
Cela donne
$dommage = ( (($wd_total*0.2714745+$int_total*0.1006032+($det_total-202)*0.0241327+$wd_total*$int_total*0.0036167+$wd_total*($det_total-202)*0.00108-1)*(168/100)*1.3)*(1+0.5*((0.0697*$crit_total)-18.437)/100) + ( 5 * (($wd_total*0.2714745+$int_total*0.1006032+($det_total-202)*0.0241327+$wd_total*$int_total*0.0036167+$wd_total*($det_total-202)*0.00108-1)*(306/100)*1.3)*(1+0.5*((0.0697*$crit_total)-18.437)/100)) + (($wd_total*0.2714745+$int_total*0.1006032+($det_total-202)*0.0241327+$wd_total*$int_total*0.0036167+$wd_total*($det_total-202)*0.00108-1)*(168/100)*1.3)*(1+0.5*((0.0697*$crit_total)-18.437)/100) + (($wd_total*0.2714745+$int_total*0.1006032+($det_total-202)*0.0241327+$wd_total*$int_total*0.0036167+$wd_total*($det_total-202)*0.00108-1)*(240/100)*1.3)*(1+0.5*((0.0697*$crit_total)-18.437)/100) + (($wd_total*0.2714745+$int_total*0.1006032+($det_total-202)*0.0241327+$wd_total*$int_total*0.0036167+$wd_total*($det_total-202)*0.00108-1)*(170/100)*1.3)*(1+0.5*((0.0697*$crit_total)-18.437)/100) + (2 * (($wd_total*0.2714745+$int_total*0.1006032+($det_total-202)*0.0241327+$wd_total*$int_total*0.0036167+$wd_total*($det_total-202)*0.00108-1)*(432/100)*1.3)*(1+0.5*((0.0697*$crit_total)-18.437)/100) ) + (0.3 * (($wd_total*0.2714745+$int_total*0.1006032+($det_total-202)*0.0241327+$wd_total*$int_total*0.0036167+$wd_total*($det_total-202)*0.00108-1)*(340/100)*1.3)*(1+0.5*((0.0697*$crit_total)-18.437)/100)) );

$temps = ( (9 * (2.5-(($ss_total-341)*0.000953077969))) + (2 * (2.5-(($ss_total-341)*0.000953077969))) + (0.3 * (2.5-(($ss_total-341)*0.000953077969))) );

$dps = $dommage / $temps;
													
$max_dps = max($dps);
J'ai également essayé de changer la façon dont les données sont affichées pour que ça correspond a l'exemple sur la page de max(); en faisant ceci :
$dpss = ', ' . $dps;
$max_dps = max($dpss);
Mais rien ne change, j'ai toujours le message d'erreur. Jsuis sur que c'est tout con, mais ça me passe complètement au dessus xD

J'ai remis dans le fichier zip, le max qui aurait du y être depuis hier, ça permettra peut être d'avoir une vue d'ensemble.


@sirakawa : Si j'ai bien compris, ton code permet de classer les données obtenues, mais dans mon cas il faut que les données "inutiles" (a savoir celles qui ne correspondent pas au plus gros dps) soient complètement virées de l'affichage.

Re: Format pour max() ?

par sirakawa » 24 juil. 2014, 08:50

bJR,
EXEMPLE:
<?PHP
$combi= array();
$textes = array("un", "deux");
for ($i = 0; $i <= 1000; $i++)
{
	$combi[$i][0] = rand (0, 3000);
	$combi[$i][1] = (($i % 2) == 0) ? "deux": "un";
}
print_r($combi);
sort($combi);
print "<hr>";
print_r($combi);
?>

Re: Format pour max() ?

par Genova » 24 juil. 2014, 03:27

Salut,

Je ne vois pas d'appel à "max()" dans ton fichier. Mais d'après l'erreur, tu ne lui passes pas le bon nombre de paramètres. Vérifie que tu l'utilises bien tel qu'indiqué dans la doc : http://fr2.php.net/max

Format pour max() ?

par achaab » 24 juil. 2014, 01:51

Bonjour à tous,


Je viens de créer un script me permettant de réaliser toutes les combinaisons possibles d'équipements pour un jeu vidéo (par exemple quelle arme va le mieux avec quel chapeau, avec quel bouclier, etc). En même temps que je fais les multiples comparaisons, j'ai intégré une petite formule mathématiques qui me permet de voir pour chaque combinaison d'équipement, le dommage par seconde (DPS).

Maintenant, je souhaiterais filtrer les résultats obtenus (car il y en a un paquet vu que j'ai beaucoup de combinaisons possibles), pour n'afficher que les combinaisons avec le meilleur DPS.
Pour cela, j'ai voulu utiliser la fonction max() mais sans succès, j'obtiens à chaque fois le message d'erreur :
Warning: Wrong parameter count for max() in xxxxxxxxxxx
J'ai d'abord cru que ça venait du fait que mes chiffres étaient à virgule ou trop grand, mais le problème reste le même si je mets un round(), sans parler du fait que si j'inscris manuellement les chiffres dans un max, ça fonctionne.

Je me dit que le soucis vient au niveau du format des données, mais ne je sais pas trop quoi lui donner, ni comment faire. Quelqu'un aurait une idée ?

Au cas ou :
- Si je fais un var_dump sur ma variable DPS, j'obtiens ceci :
Image

- Si je fais un echo sur ma variable DPS, j'obtiens ceci :
Image

- Le fichier complet (assez brute pour le moment) : http://achaab77.free.fr/test.zip

- La démo (sur cette page, j'ai édité manuellement la valeur du max dps) : http://achaab77.free.fr/test.php


Par avance, je remercie tous les intervenants.