DiamondDog: PHP Arrays vergleich und updaten?

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

  1. 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.

    1. 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.

      1. 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 ^^

      2. 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.