uasort-Warning

10/10/2012 - 10:39 von Stefan+Usenet | Report spam
Ich habe von diesem Stueck Code:

| $this->items = [array]
| [...]
| $temp = $this->items;
| uasort($temp, array('self', 'compare'));
| $this->items = $temp;

...die folgende Warnung in meinem Logfile erhalten:

| uasort(): Array was modified by the user comparison function [...]

Das klingt ja an sich rechte eindeutig, nur frage ich mich, WAS das Array
denn veraendert haben kann. $temp wird unmittelbar davor durch Kopie
erzeugt und kann daher dem Inhalt von array('self', 'compare') unmoeglich
bekannt sein:

| public function compare($object1, $object2) {
| [reichlich klassenabhaengige magie mit $object1 und $object2]
| return [0|+1|-1];
| }


Was im Detail in array('self', 'compare') geschieht, haengt von der
jeweiligen Klasse ab und ist daher, da mir das Logfile keine naeheren
Informationen liefert, nicht nachvollziehbar (es wird jedenfalls auf
$object1 und $object2 nur lesend zugegriffen). Mir waere aber schon
geholfen, wenn ich einen ganz grundsaetzlichen Weg wuesste, wie die Warnung
ueberhaupt getriggert werden konnte.

Servus,
Stefan

http://kontaktinser.at/ - die kostenlose Kontaktboerse fuer Oesterreich
Offizieller Erstbesucher(TM) von mmeike

Rundum gelungen - Stefan: aalen, welch verstautes Begehren!
(Sloganizer)
 

Lesen sie die antworten

#1 Matthias Würfl
10/10/2012 - 12:07 | Warnen spam
Am 10.10.2012 10:39, schrieb Stefan Froehlich:

Ich habe von diesem Stueck Code:

| $this->items = [array]
| [...]
| $temp = $this->items;
| uasort($temp, array('self', 'compare'));
| $this->items = $temp;



Das ist egal, denn die Warnung

| uasort(): Array was modified by the user comparison function [...]



Deutet darauf hin, dass der Hase hier begraben liegt:

| public function compare($object1, $object2) {
| [reichlich klassenabhaengige magie mit $object1 und $object2]
| return [0|+1|-1];
| }



...was aber mangels Code hier nicht analysiert werden kann.

Was im Detail in array('self', 'compare') geschieht [...] ist [...]
nicht nachvollziehbar



Das wàre notwendig.

(es wird jedenfalls auf $object1 und $object2 nur lesend zugegriffen).



PHP ist da anderer Meinung.

Grüße, Matthias

Ähnliche fragen