Willkommen Gast. Bitte einloggen oder registrieren.
Haben Sie Ihre Aktivierungs E-Mail übersehen?

Einloggen mit Benutzername, Passwort und Sitzungslänge

 
Erweiterte Suche

6953 Beiträge in 1147 Themen- von 591 Mitglieder - Neuestes Mitglied: 0etzi

06-09-2008, 22:04:08
faqboard.info - SupportforumScriptfragenScriptfragenArray sortieren in Textfile
Seiten: [1]   Nach unten
Drucken
Autor Thema: Array sortieren in Textfile  (Gelesen 1269 mal)
kleckser
Newbie
*
Offline Offline

Beiträge: 14


Profil anzeigen
« am: 09-12-2003, 18:00:23 »

Hallo,

evtl.kann mir jemand behilflich sein.

Habe eine TXT-Datei (MySQL steht nicht zur Verfügung) die wie folgt aufgebaut ist:

id;Name;wert1;wert2;wert3;wert4 usw bis wert12;prozent

es soll absteigen nach dem Prozentwert sortiert werden. In dem gesamten TXT-File sind knapp 50 Datensätze. der Prozentwert hat folgendes Format z.B. 50.25

Folgende Funktion habe ich gebastelt :

----
function sortprozent ( $a, $b ) {
return strcmp( $b[14], $a[14]); //absteigend sortiert
}
----

in dem Formular, wo die Daten eingegeben werden ist unter anderem eine Schaltfläche Sortieren (Wert 2), wenn diese gedrückt wird, wird folgfendes ausgeführt

----
elseif ( isset( $sort2 ) ) {
arsort ( $daten, sortprozent);
----


Wäre nett, wenn mir jemand mal behilflich ist und mir zeigt, wie ich die Wert absteigen sortieren kann unter Berücksichtung des gesamten Wertes, sprich auch nach dem Punkt (ich erinnere, die Werte in dem Feld, sind nicht alles gerade Zahlen

Hoffe mich einigermaßen verständlich ausgedrückt zu haben.

cu
kleckser
Gespeichert

cu
kleckser
basti
Master of Disaster
Administrator
Hero Member
*****
Offline Offline

Beiträge: 2880



Profil anzeigen WWW
« Antwort #1 am: 10-12-2003, 15:27:48 »

Hi,
du musst deinen Prozentwert in ein Array einlesen und dann danach sortieren.
Dann sollte das klappen.
Hier mal ein Beispiel:

Code:

<?php
echo "SORT<br>";
$werte = array&#40;"50.25", "32.12", "86.00", "12.06"&#41;;
sort&#40;$werte, SORT_NUMERIC&#41;;
reset&#40;$werte&#41;;
while &#40;list&#40;$key, $val&#41; = each&#40;$werte&#41;&#41; &#123;
echo "werte[".$key."&#93; = ".$val."\n<br>";
&
#125;
echo "<hr>";
echo 
"ARSORT<br>";
$werte = array&#40;"50.25", "32.12", "86.00", "12.06"&#41;;
arsort&#40;$werte, SORT_NUMERIC&#41;;
reset&#40;$werte&#41;;
while &#40;list&#40;$key, $val&#41; = each&#40;$werte&#41;&#41; &#123;
echo "werte[".$key."&#93; = ".$val."\n<br>";
&
#125;

?>

Gespeichert

kleckser
Newbie
*
Offline Offline

Beiträge: 14


Profil anzeigen
« Antwort #2 am: 10-12-2003, 18:46:27 »

Hallo,

Zitat von: basti

du musst deinen Prozentwert in ein Array einlesen und dann danach sortieren.
Dann sollte das klappen.
Hier mal ein Beispiel:


danke für das Beispiel, denke, das ich es ansatzweise "verstanden" habe, aber ich bekomme es nicht hin, es auf meine vorhanden Daten anzuwenden, irgend wie komme ich mit dem Syntax nicht klar sad Kurze Erklärung zu meinen Daten:

Meine Daten befinden sich in einem Textfile wie im Anfangsposting bereits beschrieben. Die Daten lese ich wie folgt aus :

//Datei auslesen
$datei = @fopen($blitz, "r");
     while ( feof($datei) == 0) {
         $zeile = chop( fgets($datei, 50000));
         if ($zeile != "") {
             $zeile = explode( ";", $zeile);
             $daten[ $zeile[0] ] = $zeile;
      }
   }
fclose($datei);

wobei dann

$daten[0] = die ID ist
$daten[1] = Name des Spielers
$daten[2] - bis $daten[13] die jeweiligen Werte eines Monats (sind Punkte von Monatsturnieren-Schach)
$daten[14] = die Aufsummierungen aller erreichten Prozente aus den Monatsturnieren. und eben nach $daten[14] soll sortiert werden. Die erreichten Prozente eines Monats werden bevor ich die Daten Speicher pro Monat errechnet und in $daten[14] als gesamt erreichte Prozentzahl gespeichert.

//Daten absteigend sortieren nach Gesamtprozentwert $daten[14]
>$werte = array("50.25", "32.12", "86.00", "12.06");
>arsort($werte, SORT_NUMERIC);
>reset($werte);
>while (list($key, $val) = each($werte)) {
>echo "werte[".$key."] = ".$val."\n<br>";
>}

//Daten speichern
reset( $daten );
     $datei = fopen($blitz, "w+");
     while ( list( $id, $werte ) = each( $daten ) ) {
        $alleDaten = $alleDaten.join( ";", $werte )."\n";
     }


Wie muss ich dein genanntes Beispiel umbauen, damit ich es auf meine Daten anwenden kann ? Irgendwie peile ich das nicht so ganz sad

Wenn du Zeit und Lust hast, würde ich mich freuen, wenn du mir das einmal kurz anpassen könntest.

Danke für deine Antwort.

Gruss
kleckser
Gespeichert

cu
kleckser
Seiten: [1]   Nach oben
Drucken
Gehe zu: