Aller au contenu

unset - reset et pb de pointeur ?


Sujets conseillés

Posté

Bonjour

j'essaie de modifier un script que je n'ai pas écrit moi-même et je ne comprends pas pourquoi le fait de remplacer une constante par une variable fait planter le script.

Quand je modifie ds le code ci dessous cette comparaison, en remplaçant 3 par une variable:

if(count($money[$z])>3) { 

en


$nbwinners=floor(count($money[$z]/2);
if(count($money[$z])>$nbwinners) {

Je me retrouve avec un erreur un peu plus bas

Warning: reset() [function.reset]: Passed variable is not an array or object in ...

qui correspond à

					reset($o);

Est-ce un pb de pointeur ds les tableaux, si quelqu'un a une piste, merci d'avance.

Voici le bout de code concerné:


while($dummy=1) {
$is = 1;

for($z=1;$z<=$groups;$z++) {


foreach($money[$z] as $key=>$val) {
$nbwinners=floor(count($money[$z]/2);

if(count($money[$z])>$nbwinners) { // ICI MA COMAPARAISON

$is = 0;
if(min($money[$z])==$val) {
$loosers[] = $users[$z][$key];
unset($money[$z][$key]);
unset($users[$z][$key]);
}
}
unset ($nbwinners);
}
}

if($is!=0) {
break;
}
}

$temp = $users;
foreach($temp as $g=>$val0) {
foreach($val0 as $key=>$val) {
$o[] = $val;
unset($temp[$g][$key]);
}
}

$next_groups = $groups/2;
$max = count($o);
reset($o);

$h = 0;
for($y=1;$y<=$next_groups;$y++) {
for($p=1;$p<=6;$p++) {
$next_users[$y][$p] = $o[$h];
$h++;
}
}

Posté

Bonjour,

Si tu as ton erreur, c'est que le tableau $o n'existe pas. S'il n'existe pas, c'est que ton script ne passe pas dans la deuxième boucle.

Déjà, pour être "plus propre", il faut initialiser ton tableau avant ta boucle :

$o = array();

Ensuite, j'avoue que faudrait se plonger largement plus en profondeur dans ton code pour bien comprendre ce que tu veux faire...

Posté

Bonjour

merci de t'être penché sur mon pb.

Ce qui me surprend, c'est que le script tourne bien avec une valeur fixe (3 par exemple), mais si je mets une variable qui contient la même valeur, j'obtiens cette erreur.

Posté

En fait effectivement, en initilisant le tableau je n'ai plus cette erreur donc ça veut bien dire que ma boucle ne permet pas d'y arriver, j'ai du me tromper dans l'interprêtation de ce script et ma variable ne doit pas contenir 3 tous le temps.

Merci, j'y vois plus clair.

Posté

Ton script est ultra compliqué à la lecture. Il est possible qu'il soit compliqué à l'écriture aussi. Tu veux faire quoi exactement, et il y a quoi dans tes tableaux ?

Je te conseille de réécrire ton texte en pseudo-code. Par exemple :

"Parcourir le tableau des joueurs

si argent > argent_minimum alors joueur est gagnant

sinon joueur est perdant

variable nbgagnants = nombre de joueurs dans le tableau des gagnants;

Parcourir tableau des gagnants

attribuer une somme à chacun des gagnants en fonction de ce qu'il avait misé"

Avec ça, non seulement tu y verras plus clair toi-même, mais aussi ceux qui te lisent, et tu pourras donc avoir un code qui marche. Proprement.

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...