PHP Arrays vergleich und updaten?
DiamondDog
- php
0 suit0 DiamondDog0 DiamondDog0 suit
Hallo Leute,
ich hab irgend wie gerade ne kleine Denkblockade und bräcuht n bischen Hilfe.
Alos ich hab da folgendes ich hab 4 Arrays.
In 2 der Arrays stehen Dateinamen in den andern beiden Links.
Jetzt würd ich gerne:
$new_arr1 mit $old_arr1 vergleichen und wenn ein Eintrag gleich ist aus $new_arr2 den Link dafür auslesen und diesen in $old_arr2 updaten.
Wenn aber ein File aus $new_arr1 nicht in $old_arr1 vorkommt soll es hinzugefügt werden.
Hoffe das ich das so verständlich genug erklärt habe ^^
Danke schon mal für eure Hilfe.
Mfg Dog
Hoffe das ich das so verständlich genug erklärt habe ^^
Wenn ich dich richtig verstanden habe, willst du eine Schnittmenge aus mehreren Array bilden.
Ein Blick in die Liste der Array-Funktionen von PHP sollte dich schon auf die richtige Spur bringen.
Ein Blick in die Liste der Array-Funktionen von PHP sollte dich schon auf die richtige Spur bringen.
So hab die Manual mal durchgesehen und so sieht mein Script jetzt aus:
for($i=0; $i < count($new_arr1); $i++){
$key = array_search($new_arr1[$i], $old_arr1);
$old_arr2[$key] = $new_arr2[$i];
}
Leider weiß ich nicht wie ich es hinbekomme das wenn ein Eintrag nich vorhanden ist, dieser in das $old_array1 und der Link in $old_array2 ans Ende hinzugefügt wird.
Dabei brauch ich noch mal nen kleinen Tipp.
Ich weiß das es mit der function array_push geht aber nicht wo ich sie einbauen muß das Sie ausgeführt wird wenn der Eintrag nicht gefunden wurde.
Edit:
Ich glaub ich hab die Lösung gefunden, zumindes funktioniert das soweit ich sehen konnte:
for($i=0; $i < count($new_arr1); $i++){
$key = array_search($new_arr1[$i], $old_arr1);
$old_arr2[$key] = $new_arr2[$i];
if (!in_array($new_arr1[$i], $old_arr1)){
array_push($old_arr1, $new_arr1[$i]);
array_push($old_arr2, $new_arr2[$i]);
}
}
Aber vll findet ja jemand nen Fehler, was ich aber nicht hoffe ^^
Dabei brauch ich noch mal nen kleinen Tipp.
Ich würde es anders machen: Bilde aus den beiden zu vergleichenden Arrays eine _Schnittmenge_ - diese Schnittmenge (ein neues Array) ziehst du dann vom "vollständigen" Referenzarray ab - alles was übrig bleibt, muss ins andere array hineinkombiniert werden. Alternativ kannst du statt dem Bilden einer Schnittmenge das Gegenteil machen - eine Differenz aus beiden Arrays bilden.
Wenn du den Kurzbeschreibungstext neben der Liste der Arrayfunktionen liest (und den von mir geschriebenen Text - besonders die beiden Worte "Schnittmenge" oder "Differenz" - im Hinterkopf behältst), solltest du jetzt _wirklich_ schnell auf die Lösung kommen.
Wenn ich es richtig verstanden habe, sind gar keine Schleifen oder sonstiges nötig.
Ich weiß das es mit der function array_push geht aber nicht wo ich sie einbauen muß das Sie ausgeführt wird wenn der Eintrag nicht gefunden wurde.