CronJob-Service
bei SELFPHP mit ...
|
+ minütlichen Aufrufen
+ eigenem Crontab Eintrag
+ unbegrenzten CronJobs
+ Statistiken
+ Beispielaufrufen
+ Control-Bereich
Führen Sie mit den CronJobs von
SELFPHP zeitgesteuert Programme
auf Ihrem Server
aus. Weitere Infos
|
:: Anbieterverzeichnis ::
Globale Branchen
Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP
:: Newsletter ::
Abonnieren Sie hier den kostenlosen
SELFPHP Newsletter!
|
PHP Grundlagen Hier kann über grundlegende Probleme oder Anfängerschwierigkeiten diskutiert werden |
21.02.2005, 22:26:29
|
Anfänger
|
|
Registriert seit: Jun 2004
Beiträge: 142
|
|
natcasesort zerstört Array
Hi!
Habe gerade ein Problem, und zwar macht mir natcasesort mein Array kaputt.
PHP-Code:
$temp=natcasesort($temp1);
Aus
$temp1: Array ( [0] => 5C-Schüler_3 [1] => 5C-Schüler_2 )
wird
$temp: 1
Weiß da jemand bescheid?
Gruß, Silberlocke
|
21.02.2005, 22:28:31
|
|
SELFPHP Guru
|
|
Registriert seit: May 2003
Beiträge: 7.187
|
|
AW: natcasesort zerstört Array
[func]natcasesort()[/func] hat keinen Rückgabewert:
PHP-Code:
<?php
$temp = $temp1;
natcasesort($temp);
?>
|
22.02.2005, 01:48:06
|
Anfänger
|
|
Registriert seit: Jun 2004
Beiträge: 142
|
|
AW: natcasesort zerstört Array
Dankeschön! Das ist es wohl gewesen.
|
22.02.2005, 02:45:08
|
Anfänger
|
|
Registriert seit: Jun 2004
Beiträge: 142
|
|
AW: natcasesort zerstört Array
Leider doch nicht.
Wenn ich das sortierte Array, (das sind jetzt nur Probewerte, also nicht wundern)
Array ( [4] => 2#2;ghkkljkll;zojl;; [1] => 3#3;srzth;fgh;fg; [3] => 4#4;ghkkljkll;zojl;; [2] => 5#5;gkkl;zo;fg; [0] => 7#7;sdfg;dfgfd;dfg; )
(Etwas stutzig macht mich, daß an Position 0 nicht [0], sondern die alte Position [4] steht)
ausgeben will,
PHP-Code:
$aufst_neu_sort=$aufst_neu_temp;
natcasesort($aufst_neu_sort);
$x=0;
while ($x<count($aufst_neu_sort))
{
echo ($aufst_neu_sort[$x],"#"),"<br>";
$x++;
}
sehe ich wieder die alte Reihenfolge
7#7;sdfg;dfgfd;dfg;
3#3;srzth;fgh;fg;
5#5;gkkl;zo;fg;
4#4;ghkkljkll;zojl;;
2#2;ghkkljkll;zojl;;
|
22.02.2005, 08:21:14
|
SELFPHP Guru
|
|
Registriert seit: Jul 2002
Ort: Oberursel
Alter: 54
Beiträge: 4.748
|
|
Damit hast Du Dich aber schön selber verarscht! :)
natcasesort() sortiert nach den Werten der Felder im Array und behält die Indizes bei. Du siehst es ja, die 7#... steht ganz hinten und hat weiterhin den Index 0.
Liest Du nun das Array mit einer Zählschleife aus, dann richtet er sich nicht nach der Sortierung, sondern an dem aktuellen Wert dieser Schleife. Also von 0 bis 4, darum sieht's aus wie immer.
Du kannst die Schleife auch so auslesen:
PHP-Code:
foreach ($aufst_neu_sort as $key => $value) {
echo "$key: $value<br>n";
}
Man glaube ich auch den Index neu aufbauen lassen, ist aber fraglich ob Du das willst.
|
22.02.2005, 11:37:10
|
Anfänger
|
|
Registriert seit: Jun 2004
Beiträge: 142
|
|
AW: natcasesort zerstört Array
Einen neuen Index brauch ich wohl nicht. Ich muß das Array, so wie es ist, wieder in eine Datei schreiben. Geht das so mit dem foreach-Bereich?
PHP-Code:
$fp=fopen($pfad_aufst_txt,w);
if ($fp)
{
flock($fp,2);
$nl = chr(13) . chr(10);
foreach ($aufst_neu_sort as $key => $value)
{
fputs($fp, trim($value)); // oder ist trim() hier überflüssig?
}
if ($x+1 != count($aufst_neu)) //nach letzter Zeile keinen Zeilenumbruch
{
fputs($fp,$nl);
}
flock($fp,3);
fclose($fp);
}
Ist das bei sort() eigentlich auch so, oder wird da der Index gleich neu aufgebaut? Ich meine daß ich damit nicht solche Probleme hatte, aber jetzt brauch ich die menschlich Sortierreihenfolge.
|
22.02.2005, 11:46:11
|
|
Administrator
|
|
Registriert seit: Apr 2002
Ort: Bergheim
Alter: 41
Beiträge: 5.255
|
|
AW: natcasesort zerstört Array
wenn du sicher sein kannst dass keine überflüssigen leerzeichen am anfang und ende des strings sind, kannst du es ohne trim() machen.
__________________
Gruß |Coding
---
Qozido® - Die Bilderverwaltung mit Logbuch für Taucher und Schnorchler.
www.qozido.de
|
22.02.2005, 11:53:35
|
SELFPHP Guru
|
|
Registriert seit: Jul 2002
Ort: Oberursel
Alter: 54
Beiträge: 4.748
|
|
Wenn die Datei nicht Tausende von Zeilen lang ist, dann kannst Du es auch einfach so machen:
PHP-Code:
$txt=join("rn", $aufst_neu_sort);
$txt=trim($txt);
$fh=fopen('datei.txt', 'w');
fwrite($fh, $txt);
fclose($fh);
Um Deine Frage zu beantworten: Ja, so ginge es mit dem foreach()dingens.
|
22.02.2005, 12:19:15
|
Anfänger
|
|
Registriert seit: Jun 2004
Beiträge: 142
|
|
AW: natcasesort zerstört Array
Es klappt!
Ich hab das jetzt mal so gemacht. Die Zeile mit dem Zeilenumbruch war noch ein Überbleibsel aus dem vorherigen Versuch mit der while-Schleife.
PHP-Code:
...
...
...
$nl = chr(13) . chr(10);
$x=0;
foreach ($aufst_neu as $key => $value)
{
fputs($fp, trim($value));
$x++;
if ($x != count($aufst_neu))
{
fputs($fp, $nl);
}
}
flock($fp,3);
fclose($fp);
...
Aber wie das jetzt mir sort() aussieht, würd mich ja auch interessieren. Alter oder neuer Index?.
@c4: Da wird aber nach letzter Zeile umgebrochen, oder?
|
22.02.2005, 12:32:40
|
SELFPHP Guru
|
|
Registriert seit: Jul 2002
Ort: Oberursel
Alter: 54
Beiträge: 4.748
|
|
Zitat:
Zitat von silberlocke
@c4: Da wird aber nach letzter Zeile umgebrochen, oder?
|
Nein, dafür ist ja das trim() da. Das entfernt schließlich alles Whitespaces (Leerzeichen, Tabulator und Zeilenumbrüche) am Anfang und Ende des Strings.
Umgebrochen wird nur zwischen den Zeilen.
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 18:16:07 Uhr.
|