Announcement

Collapse
No announcement yet.

Array sortiren

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Array sortiren

    Hallo Entwickler,
    Zu aller erst weise ich euch einmal schnell in meine Aufgabe ein.
    Und zwar habe ich diese 3 Arrays:
    $applicants = array(
    4 => 'Marie Janssen',
    5 => 'Max Mustermann',
    12 => 'Udo Müller',
    3 => 'Peter Pan'
    );

    $jobs = array(
    0 => 'Fachinformatiker Anwendungsentwicklung',
    1 => 'Fachinformatiker Systemintegration',
    2 => 'Gärtner',
    3 => 'Frisör',
    4 => 'Bäcker',
    12 => 'KFZ Meister'
    );

    # Key = Applicant
    $mapping = array(
    3 => array(3),
    5 => array(0, 1),
    12 => array(12, 0, 2, 1)
    );

    Anhand dieser Arrays würde ich gerne eine Tabelle erstellen, die in etwa so aussieht :
    Bewerber || Berufe
    <BewerberName>|| <ZugeordneteBerufe>
    Simone Kramer || KFZ Meister, Bäcker

    Die Bewerber sollen in aufsteigender Reihenfolge und die Berufe in absteigender Reihenfolge sortiert werden.
    Meinen Ansatz findet ihr als png im Anhang.

    Das einzige Problem ist die Sortierung :/
    Habt ihr da eventuell eine Idee ?

    Gruß
    flob
    Attached Files

  • #2
    Man benutzt heutzutage Datenstrukturen und hält keine Daten in div. Arrays.
    Einen Ansatz zur Sortierung kann ich auf deinem Bild nicht sehen

    Sortiere den Key des Arrays aufsteigend und die Liste der Values zu jedem Key absteigend
    Christian

    Comment


    • #3
      Die Aufgabe dient auch lediglich nur zum üben von Arrays.
      Ich kann nicht einfach so sortieren.. Sonst ist die Zuordnung flöten.
      Bin jetzt gerade dabei, die Daten in ein Array zu packen, um sie dann leichter zu sortieren, weil dann hab ich die Namen als Keys und die bevorzugten Berufe als Value.

      $array = array();
      foreach ($mapping as $key => $values) {
      foreach ($values as $value) {
      $array[$applicants[$key]] = array(
      $jobs[$value]
      );
      if(array_key_exists($applicants[$key], $array)) {

      }
      }
      }

      Comment


      • #4
        Ich kann nicht einfach so sortieren.. Sonst ist die Zuordnung flöten.
        Stimmt, habe ich übersehen
        Christian

        Comment


        • #5
          Hallo,

          für die Sortierung würde ich eine Funktion schreiben, die Schlüssel und Werte kombiniert (relationale Verknüpfung) und dann nach den Werten sortiert. (Bei der Array-Sortierung mittels asort() bleibt die Schlüssel-Wert-Beziehung bestehen!)
          Also z.B. sowas:
          PHP Code:
          // $pKeyArr: Array das die Schlüssel enthält, $pValArr: Array mit den relationalen Werten
          function getOrderedList($pKeyArr$pValArr$pDesc false)
          {
              
          $resArr array_intersect_key($pValArr$pKeyArr);

              if (
          $pDesc) {
                
          arsort($resArr);
              }
              else {
                
          asort($resArr);
              }

              return 
          $resArr;

          Einfache Ausgabe wäre dann:
          PHP Code:
          foreach (getOrderedList($mapping$applicants) as $applicantKey => $applicantName) {
              echo 
          $applicantKey ': ' $applicantName ': ';
              echo 
          implode(', 'getOrderedList(array_flip($mapping[$applicantKey]), $jobstrue)) . '<br />';
            } 
          Gruß Falk

          P.S.: Deine Beispiele sollten konstistent sein! Die für das gewünschte Ergebnis genannte "Simone Kramer" ist nicht in $applicants enthalten - diese Ausgabe ist somit NIE möglich.
          Dieses Forum und der erweiterte Editor unstützen Code-Formatierung! Formatierter Code erhöht die Lesbarkeit ungemein!
          Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

          Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

          Comment

          Working...
          X