Antworten auf deine Fragen:
Neues Thema erstellen

Mehrdimensionales Array sortieren

Philipp88

Nicht mehr ganz neu hier

Hallo,

wie kann ich ein mehrdimensionales Array Sortieren lassen?
Die Funktion array_multisort will bei mir nicht funktionieren:uhm:

Mein Code:
PHP:
for ($i = 0; $i < $num; $i++) {
                $row = $GLOBALS["TYPO3_DB"]->sql_fetch_assoc($res);
                $uid = $row["uid"];
                $name = $row["name"];
                $plz = $row["plz"];
                $ort = $row["ort"];
                $strasse = $row["strasse"];
                $tel = $row["telefon"];
                $distanz = "";
              
                if($plz_search == 1) {
                  $distanz = $this->distance($erdradius, $plz);
                }

                ### array generieren ###
                
                $daten[] = array(
                    "name" => $this->cObj->typolink($name, $info),
                    "plz" => $plz,
                    "strasse" => $strasse,
                    "ort" => $ort,
                    "tel" => $tel,
                    "distanz" => $distanz,
                    "info" => $this->cObj->typolink("Info", $info)
                );  
            }

                print_r($daten);

                  foreach ($daten as $key => $data) {
                    $name[$key] = strtolower($data["name"]);
                    $strasse[$key] = strtolower($data["strasse"]);
                    $ort[$key] = strtolower($data["ort"]);
                    $tel[$key] = strtolower($data["tel"]);
                    $distanz[$key] = strtolower($data["distanz"]);
                    $info[$key] = strtolower($data["info"]);
                    $name[$key] = strtolower($data["name"]);
                  }
                
            
                
           array_multisort($strasse, SORT_DESC, $daten);
            echo "<p>neu</p>";
            print_r($daten);
}

Zum Test möchte ich da Array nach Straße sortieren lassen. Mein Array ist aber immer noch nach sort unsortiert :'(
HTML:
Array ( [0] => Array ( [name] => <a href="index.php?id=127&tx_implantateadressen_pi1%5Bitem%5D=23">Zschenderlein, Dr. R.-Peter</a>[plz] => 09111 [strasse] => Bahnhofstr. 6 [ort] => Chemnitz [tel] => 0371/694464 [distanz] => ca. 63,16 km [info] => <a href="index.php?id=127&tx_implantateadressen_pi1%5Bitem%5D=23">Info</a>) [1] => Array ( [name] => <a href="index.php?id=127&tx_implantateadressen_pi1%5Bitem%5D=243">Storch, Dr. Angela</a>[plz] => 01324 [strasse] => Gnaschwitzer Str. 8 [ort] => Dresden [tel] => 0351/2686919 [distanz] => ca. 0,5 km [info] => <a href="index.php?id=127&tx_implantateadressen_pi1%5Bitem%5D=243">Info</a>) [2] => Array ( [name] => <a href="index.php?id=127&tx_implantateadressen_pi1%5Bitem%5D=389">Mehmke, Dr. Wolf-Ullrich</a>[plz] => 09120 [strasse] => Anabergerstr. 109 [ort] => Chemnitz [tel] => 0371/586035 [distanz] => ca. 63,16 km [info] => <a href="index.php?id=127&tx_implantateadressen_pi1%5Bitem%5D=389">Info</a>) [3] => Array ( [name] => <a href="index.php?id=127&tx_implantateadressen_pi1%5Bitem%5D=552">Adam, MUDr. Uwe, MSc. Implantologie</a>[plz] => 15926 [strasse] => Lange Str. 49 [ort] => Luckau [tel] => 03544/2224 [distanz] => ca. 99,3 km [info] => <a href="index.php?id=127&tx_implantateadressen_pi1%5Bitem%5D=552">Info</a>) [4] => Array ( [name] => <a href="index.php?id=127&tx_implantateadressen_pi1%5Bitem%5D=563">Schulze, Thomas ZA</a>[plz] => 01109 [strasse] => Selliner Str. 46 [ort] => Dresden [tel] => 0351/8806618 [distanz] => ca. 0,5 km [info] => <a href="index.php?id=127&tx_implantateadressen_pi1%5Bitem%5D=563">Info</a>) [5] => Array ( [name] => <a href="index.php?id=127&tx_implantateadressen_pi1%5Bitem%5D=596">Schubert, Dr. med. dent. Karsten</a>[plz] => 01127 [strasse] => Bürgerstr. 74 [ort] => Dresden [tel] => 0351/8474677 [distanz] => ca. 0,5 km [info] => <a href="index.php?id=127&tx_implantateadressen_pi1%5Bitem%5D=596">Info</a>) [6] => Array ( [name] => <a href="index.php?id=127&tx_implantateadressen_pi1%5Bitem%5D=641">Pohl, Dr. Dr. A u. Dr. C.</a>[plz] => 09387 [strasse] => Chemnitzer Str. 61 [ort] => Jahnsdorf [tel] => 03721/36005 [distanz] => ca. 71,39 km [info] => <a href="index.php?id=127&tx_implantateadressen_pi1%5Bitem%5D=641">Info</a>) [7] => Array ( [name] => <a href="index.php?id=127&tx_implantateadressen_pi1%5Bitem%5D=658">Hoch, Dr. Thomas</a>[plz] => 01097 [strasse] => Heinrichstr. 4 [ort] => Dresden [tel] => 0351/2721150 [distanz] => ca. 0,5 km [info] => <a href="index.php?id=127&tx_implantateadressen_pi1%5Bitem%5D=658">Info</a>) [8] => Array ( [name] => <a href="index.php?id=127&tx_implantateadressen_pi1%5Bitem%5D=667">Gerstenberger, Dr. Thomas</a>[plz] => 09126 [strasse] => Rosa-Luxemburgstr. 1 [ort] => Chemnitz [tel] => 0371/586310 [distanz] => ca. 63,16 km [info] => <a href="index.php?id=127&tx_implantateadressen_pi1%5Bitem%5D=667">Info</a>) [9] => Array ( [name] => <a href="index.php?id=127&tx_implantateadressen_pi1%5Bitem%5D=692">Mayer, Dr. Wolf-Karsten</a>[plz] => 01723 [strasse] => Am Markt 1 [ort] => Kesselsdorf b. Dresden [tel] => 035204/394575 [distanz] => ca. 14,93 km [info] => <a href="index.php?id=127&tx_implantateadressen_pi1%5Bitem%5D=692">Info</a>) [10] => Array ( [name] => <a href="index.php?id=127&tx_implantateadressen_pi1%5Bitem%5D=697">Zahnärztliche Gemeinschaftspraxis Maresch und Bochmann</a>[plz] => 01069 [strasse] => Kaitzer Str. 19 [ort] => Dresden [tel] => 0351/4174931 [distanz] => ca. 0,5 km [info] => <a href="index.php?id=127&tx_implantateadressen_pi1%5Bitem%5D=697">Info</a>) [11] => Array ( [name] => <a href="index.php?id=127&tx_implantateadressen_pi1%5Bitem%5D=701">Haupt, Dr. Elisabeth</a>[plz] => 01847 [strasse] => Basteistr. 19 [ort] => Lohmen [tel] => 03501/588066 [distanz] => ca. 18,64 km [info] => <a href="index.php?id=127&tx_implantateadressen_pi1%5Bitem%5D=701">Info</a>) )

Könnt ihr mir sagen was falsch ist?

Danke im voraus
Philipp
 

Duddle

Posting-Frequenz: 14µHz

AW: Mehrdimensionales Array sortieren

Bei mir funktioniert es. Habe deine Testdaten genommen und durch deinen Code gejagt und bekomme ein nach Strasse sortiertes Ergebnis:

PHP:
<?php
//$daten-array füllen

foreach ($daten as $key => $data) {
    $name[$key] = strtolower($data["name"]);
    $strasse[$key] = strtolower($data["strasse"]);
    $ort[$key] = strtolower($data["ort"]);
    $tel[$key] = strtolower($data["tel"]);
    $distanz[$key] = strtolower($data["distanz"]);
    $info[$key] = strtolower($data["info"]);
    $name[$key] = strtolower($data["name"]);
}

array_multisort($strasse, SORT_DESC, $daten);

echo "<pre>";
print_r($daten);
echo "</pre>";
?>
(falls ich die Daten rauseditieren/anonymisieren soll, sag Bescheid)

Ich habe nichts anders gemacht als du. Dein Fehler muss also irgendwas ausserhalb der Logik sein (aka. Schusselfehler).

Edit: Daten rausgenommen.


Duddle
 
Zuletzt bearbeitet:

Philipp88

Nicht mehr ganz neu hier

AW: Mehrdimensionales Array sortieren

Ich programiere in Typo3, da geht es komischerweise nicht:( Außerhalb von Typo3 läuft er.

Ja bitte machs wieder unkenntlich
 

Philipp88

Nicht mehr ganz neu hier

AW: Mehrdimensionales Array sortieren

Meine überarbeitete Distanzberechnung mit der anderen Datenbank funktioniert jetzt problemlos (siehe anderes Thema). Doch jetzt habe ich wieder das Problem mit "array multisort". Jetzt habe ich ein Problem damit, dass er leider nicht die Distanz so ordnet, dass es Sinn macht (aufsteigend von der geringsten Distanz ausgehend), aber nach "Straße, Ort etc." zu sortieren funzt problemlos... Hat jemand ne Idee was ich anders machen könnte:

Code:
foreach ($daten as $key => $row) {
      $name[$key] = strtolower($row["name"]);
      $strasse[$key] = strtolower($row["strasse"]);
      $plz[$key] = strtolower($row["plz"]);
      $ort[$key] = strtolower($row["ort"]);
      $tel[$key] = strtolower($row["tel"]);
      $distanz[$key] = strtolower($row["distanz"]);
      $info[$key] = strtolower($row["info"]);
    }
    #print_r ($distanz);
    array_multisort($distanz, SORT_NUMERIC, $daten);

Bin für jeden Tipp sehr dankbar. Danke im Vorraus :)
 

Duddle

Posting-Frequenz: 14µHz

AW: Mehrdimensionales Array sortieren

Das wird wohl daran liegen, dass deine Werte vom Typ String sind. Strings/Zeichenketten können aber nicht direkt sortiert werden. Du solltest also das strtolower() für "distanz" entfernen. Falls die Daten schon als String aus der Datenbank kommen, musst du mit intval() bzw. floatval() arbeiten.


Duddle
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Keine Mitglieder online.

Statistik des Forums

Themen
118.635
Beiträge
1.538.476
Mitglieder
67.559
Neuestes Mitglied
hanuta
Oben