PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Array Werte vergleichen


ghostface
13.09.2006, 15:51:45
Habe zwei Arrays, aus denen ich Werte vergleichen muss.
Zuerst muss ich schauen, ob beim Key [0] => vom Array 1 und Array2 das gleiche steht.
Wenn das gleiche steht muss es die Werte vom Array2 (Werte [7] bis [13] -> Key [7]+[7]; [8]+[8] usw.)adieren.
Wenn die Werte addiert sind, muss ich sie vom Array1 subtrahieren.
Wenn die Werte kleiner sind als 0, muss ich sie mit den restlichen Werten des unterarrays rausschreiben.
Bin damit noch übervordert, da ich noch nicht sehr lange mit arrays gearbeitet habe..

Bsp.

Array1[10]: 4507
Array2[10]: 5740 (bereits addiert (1233+4507))

Array1[10]-Array2[10]=4507-5740=(-1233)

Rausschrieiben:
Langnau im Emmental ;902;0;DM93;Ruefer Heinz;902_1.itf;04.08.2006;zahl1;zahl2,zahl3,zahl4,zahl5,zahl6,zahl7,2 0060804

ARRAY1
Array (
[1] => Array (
[0] => Langnau im Emmental
[1] => 902
[2] => 0
[3] => EMO
[4] => Ruefer Heinz
[5] =>
[6] =>
[7] => 1207
[8] => 54
[9] => 54
[10] => 4507
[11] => 2570
[12] => 71
[13] => 0
[14] => 20060804 )
)

ARRAY2
Array (
[1] => Array (
[0] => Signau
[1] => 902 [2] => 0
[3] => DM93
[4] => Ruefer Heinz
[5] => 902_1.itf
[6] => 04.08.2006
[7] => 4644
[8] => 4
[9] => 4
[10] => 3716
[11] => 1152
[12] => 13
[13] => 0
[14] => 20060804
)
[2] => Array (
[0] => Langnau im Emmental
[1] => 902
[2] => 0
[3] => DM93
[4] => Ruefer Heinz
[5] => 902_2.itf
[6] => 04.08.2006
[7] => 1559
[8] => 0
[9] => 0
[10] => 1233
[11] => 439
[12] => 8
[13] => 0
[14] => 20060804
)
[3] => Array (
[0] => Langnau im Emmental
[1] => 902
[2] => 0
[3] => DM93
[4] => Ruefer Heinz
[5] => 902_3.itf
[6] => 04.08.2006
[7] => 1207
[8] => 54
[9] => 54
[10] => 4507
[11] => 2570
[12] => 71
[13] => 0
[14] => 20060804
)
)

MatMel
13.09.2006, 16:55:58
//Zuerst muss ich schauen, ob beim Key [0] => vom Array 1 und Array2 das gleiche steht.
if($das_erste[0] == $das_zweite[0] )
{
//Wenn das gleiche steht muss es die Werte vom Array2 (Werte [7] bis [13] -> Key [7]+[7]; [8]+[8] usw.)adieren.
for($a=7; $a<=13; $a++)
{
$das_zweite[$a] *= 2; //jeweils verdoopeln
}
//Wenn die Werte addiert sind, muss ich sie vom Array1 subtrahieren.
for($b=7; $b<=13; $b++)
{
$das_zweite[$b] = $das_erste[$b] - $das_zweite[$b]; // abziehen udn wieder ins zweite stecken
}
//Wenn die Werte kleiner sind als 0, muss ich sie mit den restlichen Werten des unterarrays rausschreiben.
$rausschreiben = true; //grundsätzlich wird rausgeschreiben
for($c=7; $c<=13; $c++)
{
if( $das_zweite[$c] >= 0){$rausschreiben = false; } // alle durschauen ob eins über 0 is
}
foreach( $das_zweite as $elem)
{
echo"$elem \n";
}
}


Ich hoff ich habs richtig verstanden!

Die drei for Schleifen ließen sich auch zu einer machen...

ghostface
13.09.2006, 17:09:48
hast alles bis auf das hier richtig verstanden:

//Wenn das gleiche steht muss es die Werte vom Array2 (Werte [7] bis [13] -> Key [7]+[7]; [8]+[8] usw.)adieren.
for($a=7; $a<=13; $a++)
{
$das_zweite[$a] *= 2; //jeweils verdoopeln
}

es geht nicht um das verdoppeln vo werten, sonder darum, dass in allen arrays von array2 die bereits durch die vordere selektion gekommen sind die werte zb. beim key [10] 1233 und 4507 addiert werden. verstehst du was ich meine? ist ein bischen schwierig zu vormulieren.. schonamal danke für deinen lösungsvorschlag!!

MatMel
19.09.2006, 17:43:57
Also ich wage noch einen Versuch:


<?PHP
//Zuerst muss ich schauen, ob beim Key [0] => vom Array 1 und Array2 das gleiche steht.
if($das_erste[0] == $das_zweite[0] )
{
//Wenn das gleiche steht muss es die Werte vom Array2 (Werte [7] bis [13] -> Key [7]+[7]; [8]+[8] usw.)adieren.
for($a=7; $a<=13; $a++)
{
foreach($das_zweite as $value)
{
$add_result[$a] += $value[$a]; //jeweils dazuaddieren
}
}
//Wenn die Werte addiert sind, muss ich sie vom Array1 subtrahieren.
for($b=7; $b<=13; $b++)
{
$add_result[$b] = $das_erste[$b] - $add_result[$b]; // abziehen udn wieder ins zweite stecken
}
//Wenn die Werte kleiner sind als 0, muss ich sie mit den restlichen Werten des unterarrays rausschreiben.
$rausschreiben = true; //grundsätzlich wird rausgeschreiben
for($c=7; $c<=13; $c++)
{
if( $add_result[$c] >= 0){$rausschreiben = false; } // alle durschauen ob eins über 0 is
}
foreach( $add_result as $elem)
{
echo"$elem \n";
}


}
?>


Ich hoffe jetzt passts. Vorher war auch in den andren for Schleifen noch ein kleiner Denkfehgler drin (es wurde immer auf das ARRAY2 zugegriffen, nicht auf dessen Unterarrays).

Gruß,
Matze

ghostface
20.09.2006, 10:02:16
wie könnte ich die were aus array2 zusammenfügen, dass das array2 anstatt so wie oben im Beispiel so aussehen würde?

ARRAY2
Array (

[1] => Array (
[0] => Signau
[1] => 902 [2] => 0
[3] => DM93
[4] => Ruefer Heinz
[5] => 902_1.itf
[6] => 04.08.2006
[7] => 4644
[8] => 4
[9] => 4
[10] => 3716
[11] => 1152
[12] => 13
[13] => 0
[14] => 20060804 ) [2] => Array (
[0] => Langnau im Emmental
[1] => 902
[2] => 0
[3] => DM93
[4] => Ruefer Heinz
[5] => 902_2.itf
[6] => 04.08.2006

[7] => 2766
[8] => 54
[9] => 54
[10] => 5740
[11] => 3009
[12] => 79
[13] => 0

[14] => 20060804) )

Unterschied: Wenn der key[0] gleich ist, werden die Werte [7] bis [13] addiert und aus zwei arrays eines gemacht.