Arraysortierung

  • Themenstarter Themenstarter Wissenscoder
  • Beginndatum Beginndatum
W

Wissenscoder

Hi!
Habe folgenes Array:

PHP:

$tdaten_$sp
= array(

array(
id=>$s_id,

t_g=>$t_g,

t_f=>$t_f,

t_k=>$t_k,

t_e=>$t_e)

);


So für ein Ereignis soll immer ein Array angelegt werden. So nun möchte ich das in einer Tabelle sortiert ausgeben lassen.
D.h....es sollen alle Arrays sortiert werden und das mit dem höchsten $t_k Wert soll an erter Stelle stehen später in der Tabelle und das mit dem niedrigsten ganz unten. Wie mache ich das?
 
Zuletzt bearbeitet von einem Moderator:
nein, denn das problem ist ja, nicht das array soll sortiert werden, sondern mehrere arrays also pro ereignis gibt es ja eins und da soll sortiert werden. Also mehrere Arrays sollen nach größe sortiert werden eines bestimmten wertes
 
nein, denn das problem ist ja, nicht das array soll sortiert werden, sondern mehrere arrays also pro ereignis gibt es ja eins und da soll sortiert werden. Also mehrere Arrays sollen nach größe sortiert werden eines bestimmten wertes

Daher steht ja gleich am Anfang ein wichtiges Schlüsselwort: Multidimensional

One more solution for multidimensional sort: variable functions.

Ich denke, diese Funktion ist genau das, was du brauchst. Kann ich aber auch irren. :rolleyes:
 
stimmt, habe es nicht gesehen, aber kann es mir einer erklären...blicke da ned ganz durch
 
Naja du rufst die Funktion sort2d auf und übergibst ihr einfach den zu sortierenden Array, als 2. Parameter die Spalte, die du sortieren willst, und als dritten optionalen Parameter, welche Sortierungsfunktion intern verwendet werden soll. Standardmäßig is das sort, es wird also aufsteigend sortiert. Wenn du absteigend haben willst, solltest du als dritten Parameter rsort übergeben. Das ganze kann dann so aussehen:

PHP:
sort2d( $tdaten, 3, 'rsort');

echo "<pre>";
print_r($tdaten);
echo "</pre>";

Have fun!
 
hi! habe nun das genommen:
alishahnovin at hotmail dot com
26-May-2007 01:11

Da es mir logischer erscheint. meine frage nun: wie gebe ich die werte nun aus?
 
Mit foreach durch den Array laufen, der die Datensätze enthält, wäre mein Vorschlag.

PHP:
foreach($tdaten as $daten){
   echo $daten['t_k'];
}
 
Ok, er gibt nun die richtigen Werte aus...nun noch eine einzige Frage, wenn ich eine Tabelle habe die so aufgebaut ist:
--------------
Ereignis|t_k|t_g
--------------
1| Wert| Wert 2
2| Wert| Wert 2

Wie mache ich das, dass der t_g Wert immer eine Zeile tiefer ausgegeben wird?
 
Zuletzt bearbeitet von einem Moderator:
"Er" gibt vermutlich deswegen nix aus, weil du dein Array erstmal ordentlich aufbauen sollst. Wenn du mit assoziativen Arrays (vulgo Dictionary) arbeiten willst, solltest du das auch so machen:

PHP:
$myArray = array(
   'id' => $someID,
   'value' => $someValue,
   'flags' => $someFlags
);

Wenn man es so löst wie du, und error_reporting ist nicht an, wird man nie feststellen, das id, t_g, t_f... als Konstanten verwenden werden sollen, welche aber nirgends definiert sind (oder doch?).

Du kannst natürlich für jede Spalten-Bezeichnung eine Konstante festlegen:

PHP:
define('id', 1);
define('t_g', 2);
define('t_f', 3);
....

Dann ist natürlich der foreach etwas anzupassen:

PHP:
foreach($tdaten as $daten) {
    echo $daten[id]. '<br/>';
    echo $daten[t_g]. '<br/>';
    echo $daten[t_f]. '<br/>';
    .....
}
 
Zurück