Sortierung nach 2 zusammengehörenden Variablen

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

  • Sortierung nach 2 zusammengehörenden Variablen

    Hallo zusammen. Ich stecke fest. Ich habe folgendes Problem:
    Ich habe viele Einträge: einen Namen und eine Nummer. Die hole ich aus einer Liste und habe dann:
    PHP-Code:
    $arr1=array($name1,$number1); // Felix, 6
    $arr2=array($name2,$number2); // Peter, 17
    $arr3=array($name3,$number3); // Roman, 1 
    Nun müsste ich diese Variablen nach der Nummer sortieren, aber dann den Namen bekommen. Ich möchte also bekommen --> von der kleinsten Nummer zur grössten --->
    Roman
    Felix
    Roger
    Peter

    Kann mir jemand auf die Sprünge helfen, wie ich dies sortieren kann, so dass die Variable mit dem Namen drin mitkommt, resp. sortiert zur Verfügung steht?
    Vielen Dank für eure Hilfe!
    Zuletzt geändert von asterix6; 29.03.2023, 11:42.

  • #2
    Moin,

    zeig mal bitte den Code, wie du das aus der DB holst.

    VG

    Kommentar


    • #3
      ich hole es aus einer csv Datei, finde die Daten und schreibe sie in diese Arrays rein. Ich suche nach den Namen und finde damit auch die Zahl. Also ich suche nach Felix und finde die Zahl im Feld davor: 6.

      Diese beiden gefundenen Variablen ($name1 == Felix und $number1==6) schreibe ich in einen Array: $arr1=array($name1,$number1);. Dann suche ich den nächsten Namen usw. So habe ich alle diese $arrX mit je 2 Variablen (Name, Zahl). Von diesen $arrX möchte ich jetzt sortieren nach $numberX und dann den Namen auslesen

      Kommentar


      • #4
        Pack mal die zu suchenden Namen in ein array und durchsuch dann mittels foreach die .csv. Die Ausgabe kannst du dann in der Schleife mit sort() oder asort() nach der Nummer sortieren.

        Kommentar


        • #5
          aber ich brauche ja nicht diese Nummer, sondern den dazugehörigen Namen. kann ich auch die $arrX in einen weiteren array packen und den nach Nummer sortieren? Das versuchte ich, aber da bleibe ich stecken. Hat jemand einen Tipp?

          Kommentar


          • #6
            Jetz steh ick uffn Schlauch... Was ist denn nun dein Suchparameter, der Name oder die Nummer?

            Kommentar


            • #7
              Suchen nach Name, sortieren nach Nummer.

              Kommentar


              • #8
                Zitat von BBBln Beitrag anzeigen
                Moin,

                zeig mal bitte den Code, wie du das aus der DB(.csv) holst.

                VG
                I repeat...

                Kommentar


                • #9
                  Der sieht so aus:

                  PHP-Code:
                  if (($handle fopen("names.csv""r")) !== FALSE) {
                  $i 0;
                  while ((
                  $data fgetcsv($handle1000",")) !== FALSE)
                  {
                  $encodedData = array();
                  if(
                  $i 2) {
                  foreach(
                  $data as $rawData){
                  $encodedData[]=fixEncoding($rawData);
                  }
                  $rows[] = $encodedData;
                  }
                  $i++;
                  }
                  fclose($handle);
                  }

                  $IDs=array();

                  }

                  foreach (
                  $rows as $key) {
                  // hier in array nach Namen suchen (ab $key[40] sind in allen geraden $keys Namen und in allen ungeraden die Nummern dazu.)

                  $name1 array_keys($key$name1);
                  $number1 $key[$name1+1];
                  $arr1=array($name1,$number1)

                  $name2 array_keys($key$name2);
                  $number2 $key[$name2+1];
                  $arr2=array($name2,$number2)

                  etc
                  .
                  // sortieren nach Feldnummern-Nummern aber Feldnummern-Name ausgeben und daraus den Namen holen.

                  Zuletzt geändert von asterix6; 30.03.2023, 05:50.

                  Kommentar


                  • #10
                    Versuch mal das in ein Multidimensionales array zu packen. So evtl.:
                    PHP-Code:

                    $output 
                    = array(
                        
                    sort($number.$i)
                        array(
                    $name1$number1);
                        array(
                    $name2$number2);
                        array(
                    $name3$number3);
                        array(
                    $name4$number4);
                       
                    //ect.

                    Kommentar


                    • #11
                      I write these two found variables ($name1 == Felix and $number1==6) into an array: $arr1=array($name1,$number1); . Then I look for the next name and so on. So I have all these $arrX with 2 variables each (name, number). From these $arrX I would now like to sort by $numberX and then read out the name
                      [COLOR=#ffffff]https://ppssppgold.one[/COLOR]
                      Zuletzt geändert von admin; 24.04.2023, 08:08.

                      Kommentar


                      • #12
                        PHP-Code:
                        $rows[] = $encodedData
                        Versehe das Element von $rows mit dem zu sortierenden id aus $encodedData - z.B.

                        PHP-Code:
                        $rows$encodedData[0]] = $encodedData//Je nachdem in welcher Spalte sich die gewünschte id befindet 
                        Sortiere anschließend $rows;
                        Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
                        Schön - etwas Geschichte kann ja nicht schaden.
                        Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

                        Kommentar


                        • #13
                          Danke! So funktioniert es. Vielen Dank für die Hilfe!

                          Kommentar

                          Lädt...
                          X