Vergleich aller möglichen Array-Kombinationen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Vergleich aller möglichen Array-Kombinationen

    Hallo php-resource-User,
    ich suche eine Funktion bzw. einen Denkanstoß für folgendes Szenario. Ich möchte wie unten alle möglichen Array-Element-Kombinationen. Bin vor längerer Zeit mal auf eine solche Funktion gestoßen, kann diese aber nicht wiederfinden. In erster Linie geht es mir nicht darum von euch fertigen Code zu bekommen, sondern mir Lösungstipps zu holen, bevor ich mich allein dransetz und nachher was zusammenpfusch. Ich hab mir das so gedacht, ich lass das über eine Schleife durchlaufen, speicher die Ergebnisse in einem Array zwischen und springe bei einer Rekursion einen Array-Wert weiter, mit dem begonnen werden soll. Bin schonmal auf eure (Verbesserungs-)Vorschläge gespannt .

    PHP-Code:
    function array_combos($array$calc FALSE) {
      if(
    $calc !== FALSE) {
        
    //combos, kleinere von höherem wert abziehen und ausrechnen
      
    }
      
      else {
        
    //einfachen combos
      
    }
    }

    $numbers = array(12481632641282565121024);
    print_r(array_combos($numbers));
    // Ausgabe soll sein
    // 16 - 8
    // 64 - 32
    // 2  - 1
    // etc.

    $words = array('php''mysql''html''java''javascript''python');
    print_r(array_combos($words));
    // Ausgabe soll sein
    // php - mysql
    // php - html
    // php - java
    // php - javascript
    // php - python
    // mysql - html
    // mysql - java
    // mysql - javascript
    // mysql - python
    // html - java
    // html - javascript
    // html - python
    // java - javascript
    // java - python
    // javascript - python 

  • #2
    Das Beispiel mit den numerischen Elementen verstehe ich ehrlich gesagt nicht. Der Rest sieht zumindest im Groben nach dem Kartesischen Produkt aus. Deine Beschreibung allerdings (alle möglichen Element-Kombinationen) deutet auf Permutation hin.
    Vielleicht erklärst du nochmal etwas genauer, was du vorhast. Oder ich bin mittlerweile einfach zu müde


    Grüße
    Nieder mit der Camel Case-Konvention

    Kommentar


    • #3
      PHP-Code:
      function array_combos($array$calc FALSE) {
        
      rsort($array);
        foreach (
      $array as $e) {
          foreach (
      $array as $e2) {
            if (
      $e != $e2 && !isset($c[$e2])) {
              
      $c[$e][$e2] = $calc $e $e2 "$e - $e2";
            }
          }
        }
        return 
      $c;

      Kommentar


      • #4
        @Griecherus, das mit den Zahlen ist nur fürs Ausrechnen da. Gut dass du mir da die zwei Stichworte genannt hast, werd ich mal weiter drauf eingehen.

        @onemorenerd, Dankeschön! Hätte mir das gar net so einfach vorgestellt.

        Kommentar


        • #5
          @onmorened, nicht gerade effektiv die zweite Schleife vom Anfang an durchdrehen zu lassen.

          PHP-Code:
          for($i 0$size count($array); $i $size$i ++)
          {
              for(
          $j $i 1$j $size$j ++)
              {
                  
          // mach was
              
          }

          Kommentar

          Lädt...
          X