Je ne comprends pas bien comment PHP alloue, donc je ne sais pas si j'ai fait une erreur, ou si c'est un bug.Utilise-t-on l'écrasement de la tête ou de la queue de la matrice?
usort() met à zéro par intermittence la tête ou la queue du réseau.
class foo
{
public $idx;
public $data;
}
function compare_foos ($a, $b)
{
if ($a->data == $b->data)
return 0;
elseif ($a->data < $b->data)
return -1;
else
return 1;
}
$mylist = Array();
for ($i=0; $i < 10; ++$i)
{
$mylist[$i] = new foo();
$mylist[$i]->idx = $i;
$mylist[$i]->data = rand() % 20;
}
print_r ($mylist);
usort ($mylist, compare_foos);
echo "<HR>";
print_r ($mylist);
Exemple en direct: http://codepad.org/fOdA0hca. Que voulez-vous dire par * mettre à zéro la tête ou la queue *? Le tri semble fonctionner comme prévu. –
Ce code fonctionne correctement. 'usort ($ mylist, compare_foos);' - quote 'compare_foos', c'est juste une chaîne, pas une constante. –
C'est probablement un bug dans mon installation php alors. Parfois, il remplace le premier ou le dernier élément par un null (pas de données). Je ne connais pas le terme PHP spécifique pour cela. Cela fonctionne à chaque fois si je code moi-même la fonction de tri. Je me demandais juste si j'allouais correctement le tableau, c'est tout. Puisque vous dites que je suis, ça doit être un bug dans le système local. – gecko