jo, ich hab es eigentlich mit allen mitteln die ich in selfphp gefunden habe probiert.
mit:
sort
asort
arsort
usort
ksort
natsort
rsort
und auch mit diesen beiden:
uasort
uksort
ich weis allerdings auch nicht was sich mir bie den beiden letzten funktionen für möglichkeiten ergeben, weil...
Zitat:
ich zitiere aus SELFPHP
Die Funktion uasort() sortiert ein Array (array) nach den Werten seiner Elemente
auf Basis der Reihenfolge, die von einer benutzerdefinierten Funktion
(cmp_function) vorgegeben wird. Die Zuordnung von Schlüssel und Wert bleibt
dabei erhalten...
|
Zitat:
ich zitiere aus SELFPHP
Die Funktion uksort() sortiert ein Array (array) nach den Schlüsseln seiner
Elemente auf Basis der Reihenfolge, die von einer benutzerdefinierten Funktion
(cmp_function) vorgegeben wird. Die Zuordnung von Schlüssel und Wert bleibt
dabei erhalten...
|
was kann ich da nur machen?
hier mal mein script mit dem alles soweit klappt, wie keine doppelten einträge vorhanden sind.
inhalt der datei "file.txt":
asdfasdf(.)(.)fgsfgsfg(.)(.)sdfgsdfgsgf
sdfgsdf(.)(.)r345t(.)(.)j78ik
pöpäi(.)(.)uilhhu9h(.)(.)lhjklhl
jkghjkgkghjk(.)(.)ghjkgjkghjk(.)(.)ghjkghjk775
PHP-Code:
by col0:
<select name="sort_by" onchange="window.location=('test.php?sort=&sort_by=col0&type='+this.options[this.selectedIndex].value)">
<option value="">wählen</option>
<option value="up">aufsteigend</option>
<option value="down">absteigend</option>
</select>
by col2:
<select name="sort_by" onchange="window.location=('test.php?sort=&sort_by=col2&type='+this.options[this.selectedIndex].value)">
<option value="">wählen</option>
<option value="up">aufsteigend</option>
<option value="down">absteigend</option>
</select>
<?
if(isset($sort)) // sortieren starten?
{
$file = 'file.txt'; // text datei
$fpr = fopen($file, 'r'); // oeffnen
echo '<table>'; // table "start" tag
while(!feof($fpr)) // datei auslesen
{
// optimieren der zeilen und modifiziert in variable data
// speichern
$data = ltrim(chop(fgets($fpr, 1000)));
// "datasplitting" col0 und col2 aus zeile extrahieren. trennzeichen ist (.)(.)
$data = explode('(.)(.)', $data);
switch($sort_by) // sortieren nach...
{
// nach col0 sortieren
default:
case 'col0':
// col2 als array-key und col0 als array-value
// in array uebergeben
$array[$data[2]] = $data[0];
break;
// nach col2 sortieren
case 'col2':
// col0 als array-key und col2 als array-value
// in array uebergeben
$array[$data[0]] = $data[2];
break;
} // ende switch
} // ende datei auslesen
// type = aufsteigend? dann asort und array-value sortieren
if($type == 'up') asort($array);
// type = absteigend? dann asort und array-value sortieren
if($type == 'down') arsort($array);
// array-key und array-value aus array auslesen
while(list($key, $value) = each($array))
{
// array-value und array-key in tabellenzelle ausgeben
echo '<tr><td width="200">'.$value.'</td><td width="200">'.$key.'</td></tr>';
} // end key und value auslesen
echo '</table>'; // tabelle schliessen
} // ende sortieren starten?
?>
vielleicht kann mir wer helfen...
P.S. ja, ich weis mein trennzeichen sieht aus wie zwei titten ;-)
der mittlere wert des text files fällt beim sortieren weg, bzw. ich filtere ihn mit dem script vorher raus.