Array nach For{} neu sortieren

Die Scriptsprache PHP fĂĽr die Gestaltung von dynamischen Websites.

Array nach For{} neu sortieren

Beitragvon Uli » So 18 Aug, 2002 15:25

<HTML>Hallo,

folgendes Beispiel soll in der Tabelle einer Ergebnisseite stehen, welche durch ein Formular aufgerufen wurde.

Einzelne, aus dem CSV-File geholte Werte werden addiert und als Gesamtsumme in die Tabelle geschrieben.

Das ganze einmal in stark abgekĂĽrzter Form:

<?php

$i = array(0,0); $x = null; $z = array("","","");


if(file_exists("beispiel.csv"))
{

$z[0] = file("beispiel.csv");


<table border="0" width="540" cellpadding="4" cellspacing="1">
<tr>
<td>Name</td>
<td>Zwischensumme1</td>
<td>Zwischensumme2</td>
<td>Zwischensumme3</td>
<td>Gesamtsumme</td>
</tr>


for($i[0] = 1; $i[0] < count($z[0]); $i[0]++)
{

$x = explode(";", $z[0][$i[0]]);

// Berechnung Zwischensummen Beispiel
$zwischensumme1 = $x[5] * $variable / 100;
$zwischensumme2 = $x[10] / 1000 * $vaiable;
$zwischensumme3 = $x[22] * variable / 100 * 1.16;

// Berechnung Gesamtbetrag
$gesamtsumme = $zwischensumme1 + $zwischensumme2 + $zwischensumme3;

echo "
<tr>
<td> $x[0] </td>
<td> $zwischensumme1 </td>
<td> $zwischensumme2 </td>
<td> $zwischensumme3 </td>
<td class='m'> $gesamtsumme </td>
</tr>
";

}

echo "</table>";

}

?>


Nun soll die Tabelle aber nach $gesamtsumme sortiert sein - und das kriege ich einfach nicht hin.


Viele GrĂĽĂźe
Uli </HTML>
Uli
 

RE: Array nach For{} neu sortieren

Beitragvon [KB]Flipper » Mi 21 Aug, 2002 03:23

<HTML>Kann's sein dass das Forum ein paar Sachen geschluckt hat? (oder sind die teilweise grossen Abstände absichtlich)
wie.. also du hast dann:

Name | Zwischensumme1 | Zwischensumme2 | Zwischensumme3 | Gesamtsumme
Namea| ZS1a | ZS2a | ZS3a | Gesamta
Nameb| ZS1b | ZS2b | ZS3b | Gesamtb

und du willst jetzt dass die Tabelle nach der Spalte Gesamtsumme sortiert ist?
Sortieren ist imo in arrays am einfachsten..
Falls ich das Beispiel richtig mitbekommen hab müsste sich ein mehrdimensionaler Array am besten eigenen. Beim assoziativen Array bekommt der Index den Wert der Gesamtsumme. Gleichzeitig machst du einen 2. numerischen Array, in den du auch die Werte der Gesamtsumme eingibst. Wenn die Dateneingabe vorbei ist, sortierst du den zweiten, numerischen Array einfach mir rsort, dann steht die grösste Summe an erster Stelle. Anschließend gibst du mit einer foreach-Schleife die Werte in eine Variable, mit der du wiederum in einer Schleife die Arrays nach der Reihe ausgibst.
Blickt noch jemand durch? Zur Sicherheit hab ich ein Beispiel gemacht :)
$gs = Gesamtsumme
$zs1 = Zwischensumme1
$zs2 = Zwischensumme2
$zs3 = Zwischensumme3


$gs=10; # ich weis da jetzt mal einfach irgendwelche Werte zu...
$zs1=4;
$zs2=3;
$zs3=3;
$summen[$gs]=array($zs1,$zs2,$zs3,$gs); # mehrdimensionaler Array
$sort[]=$gs; # eindimensionaler, numerischer Array
$gs=100;
$zs1=25;
$zs2=30;
$zs3=45;
$summen[$gs]=array($zs1,$zs2,$zs3,$gs);
$sort[]=$gs;
$gs=40;
$zs1=10;
$zs2=25;
$zs3=5;
$summen[$gs]=array($zs1,$zs2,$zs3,$gs);
$sort[]=$gs;


rsort($sort); # sortieren von dem 2., numerischen Array


$c=sizeof($sort); # gibt die Grösse des Arrays in die Variable c

foreach ($sort as $d)
{
foreach ($summen[$d] as $e)
{
echo $e . " ";
}
echo "<br>";
}

trara, und so hast du die Werte nach der Reihe ausgegeben. Du brauchst nur mehr an den entsprechenden Stellen die <td> und <tr>-Tags setzen.
Hier noch mal der Source: http://free.pages.at/flipper1/stuff/array.php
... und die Ausgabe: http://localhost/php/array2.php
nur falls die Formatierung oder sonstwas im Forum nicht gescheit hinhaut.
So, ich hoffe ich hab dir geholfen - wahrscheinlich gibt's auch elegantere Lösungen.
Kann auch sein dass ich Schwachsinn erzählt habe, ich bin grade erst am PHP lernen! :)
mfg
[KB]Flipper</HTML>
[KB]Flipper
 

RE: Array nach For{} neu sortieren

Beitragvon [KB]Flipper » Mi 21 Aug, 2002 03:25

äh.... irgendwie hat das Forum da was durcheinander gebracht *gg* das war eventuell wegen den <tr> und < d> tags *hoffentlich gehts jetzt* :)
also anfangen tut der Post unter meinem Namen logischerweise, und ganz unten ist er nicht aus sondern geht oben wieder weiter :)
mfg
[KB]Flipper
[KB]Flipper
 


ZurĂĽck zu PHP

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast