phpbar.de logo

Mailinglisten-Archive

[php] Fehler in Funktion array_splice oder mach ich was falsch?

[php] Fehler in Funktion array_splice oder mach ich was falsch?

Sascha Hofmann php_(at)_phpcenter.de
Fri, 22 Mar 2002 15:29:02 +0100


Hallo Jungs (und M�dels),

ich habe einen Array mit folgendem Aufbau

$array1[0] = array("a" => 3, "b" => 3);
$array1[1] = array("a" => 9, "b" => 3);
$array1[2] = array("a" => 11, "b" => 11);
$array1[3] = array("a" => 11, "b" => 11);
$array1[4] = array("a" => 15, "b" => 11);
$array1[5] = array("a" => 2, "b" => 2);

Ich m�chte nun den array aufteilen in 2 arrays, wobei array1 alle 
Elemente enth�lt, wo a = b ist und array2 alle elemente mit a != b.

Die richtige L�sung f�r obiges Zahlen beispiel w�re:

gerade   = 0,2,3,5
ungerade = 1,4

Gel�st habe ich das Problem mit folgendem Code:

foreach ($array1 as $key = $val) {
     if ($val["a"] == $val["b"]) {
         $array2[] = array_splice($array1,$key,1);
     }
}

$array1 sollte nun nur noch aus den ungeraden Elementen bestehen, 
w�hrend  $array2 alle geraden beinhaltet (mit einer etwas anderen 
Arraystruktur, aber das ist erstmal egal).

Was aber herauskommt ist, dass $array1 (ungerade) 3 Elemente enth�lt. 
Der falsche fuffziger ist Element 3. In $array2 (gerade) sind zwar 
(korrekterweise) 4 Elemente vorhanden, aber das letzte Element ist leer.
es fehlen die Daten von Element 3.
Ich hab da einiges ausprobiert: Z.B. $array1 vorher kopiert und die 
Modifikation mit array_splice an dem unber�hrten array durchgef�hrt.
Es bleibt bei diesem Fehler, ABER (jetzt kommts):
Wenn ich die Bedingung genau andersrum formuliere mit
if ($val["a"] != $val["b"])
arbeitet die Funktion korrekt.

Probierts mal zuhause aus, ob ihr auf das gleiche Ph�nomen stosst. Ich 
benutze PHP 4.12 als Apachemodul unter Win2000.
Ich bin der Meinung, dass ist ein Fehler in PHP. Aber vielleicht hab ich 
ja irgendein Detail �bersehen. Kl�rt mich auf.

Gruss,
Sascha


php::bar PHP Wiki   -   Listenarchive