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 |
03.09.2007, 21:58:39
|
|
Junior Member
|
|
Registriert seit: Aug 2006
Ort: Bremen
Alter: 44
Beiträge: 247
|
|
Wie Array aufteilen?
Mal angenommen ich habe dies Array hier...
HTML-Code:
Array
(
[eins] => 001|92838838|text|text|text|text|text|text|text|text
[zwei] => 001|92838838|text|text|text|text|text|text|text|text
[drei] => 001|92838838|text|text|text|text|text|text|text|text
[vier] => 001|92838838|text|text|text|text|text|text|text|text
)
Ich möchte gern dieses Array in die Keys aufteilen, und den String einzeln zu einem Array machen.
So zum Beispiel:
HTML-Code:
Array
(
[eins] => 001|92838838|text|text|text|text|text|text|text|text
)
Array
(
[zwei] => 001|92838838|text|text|text|text|text|text|text|text
)
usw.
Am besten wäre das doch über eine Schleife, oder?
__________________
Worte haben Macht - nichts...
|
03.09.2007, 22:51:47
|
Junior Member
|
|
Registriert seit: Jun 2004
Beiträge: 473
|
|
AW: Wie Array aufteilen?
Zitat:
Zitat von maiskolben
Am besten wäre das doch über eine Schleife, oder?
|
Ja...
Aber wozu soll das gut sein?
Du willst aus einem schön übersichtlichen, zweidimensionalen Array n Einzelarrays machen, wozu?
Deine Sortierprobleme löst du so nicht... (falls es noch darum geht)
PS:
Was hast du bloß mit dieser bekackten txt-Datei vor?!?
Du liest und splittest und sortierst da doch schon die ganze Zeit herum. Müßtest du nicht langsam mal alles beisammen haben?
;-)
Vor allem hattest du die Zeilen doch bei deinem Sortierproblem schon auseinander gepflückt!?!
Geändert von Raketenmann (03.09.2007 um 22:52:07 Uhr)
|
03.09.2007, 23:27:09
|
|
Junior Member
|
|
Registriert seit: Aug 2006
Ort: Bremen
Alter: 44
Beiträge: 247
|
|
AW: Wie Array aufteilen?
ich möchte einfach, dass meine bekackten neuen einträge nach datum, also die neuen zuerst, die alten zuletzt angezeigt werden....
__________________
Worte haben Macht - nichts...
Geändert von maiskolben (05.09.2007 um 23:32:37 Uhr)
|
03.09.2007, 23:46:14
|
Junior Member
|
|
Registriert seit: Jun 2004
Beiträge: 473
|
|
AW: Wie Array aufteilen?
PHP-Code:
$z_elem=array();
$zeilen=file('index.txt'); // Deine Datei
for($z=0;$z<count($zeilen);$z++)
{
$tarr=explode("|",$zeilen[$z]);
if($tarr[0]=='001')
{
$z_elem[$tarr[1]]=$zeilen[$z];
}
}
krsort($z_elem);
print_r($z_elem);
Das sollte die Datei auslesen, die 001er raussortieren und absteigend nach Timestamps sortieren. Die Schlüssel von $z_elem entsprechen den Timestamps aus den Zeilen.
Geändert von Raketenmann (03.09.2007 um 23:50:46 Uhr)
|
04.09.2007, 17:27:01
|
|
Junior Member
|
|
Registriert seit: Aug 2006
Ort: Bremen
Alter: 44
Beiträge: 247
|
|
AW: Wie Array aufteilen?
Vielen Dank Raketenmann!
Das ist das, was ich eigentlich brauche, und es ist sehr gut, dass das Script nicht so ewig lang ist!
Allerdings gibt es noch ein Problem:
Wenn Beiträge am selben Tag geschrieben wurden, dann ist der Timestamp derselbe, und jeweils der letzte Eintrag überschreibt den davor...
Hmmm, ich poste Dir mal Deinen von mir modifizierten Code...
PHP-Code:
$z_elem = array();
for($z=0;$z<count($zeilen);$z++)
{
$tarr = explode("|",$zeilen[$z]);
if($tarr[0] == '001')
{
$datum = explode('/', $tarr[1]);
$bz = mktime(0,0,0, $datum[1], $datum[0], $datum[2]);
$z_elem[$bz] = $zeilen[$z];
krsort($z_elem);
$element = explode("|",$z_elem[$bz]);
// Template einbinden und Variablen ausgeben!
include ($_SERVER['DOCUMENT_ROOT']) . ('/template.html');
}
}
print_r($bz);
($element wird später das Array in dem jede einzelne Ziele als Array drin ist, und ich es über das Template ansprechen kann...)
__________________
Worte haben Macht - nichts...
|
04.09.2007, 17:55:43
|
Senior Member
|
|
Registriert seit: Sep 2007
Ort: Potsdam
Alter: 55
Beiträge: 1.020
|
|
AW: Wie Array aufteilen?
|
04.09.2007, 18:41:28
|
|
Junior Member
|
|
Registriert seit: Aug 2006
Ort: Bremen
Alter: 44
Beiträge: 247
|
|
AW: Wie Array aufteilen?
Vielen Dank Defabricator!
Aber das erscheint mir plausibeler als das Script von Dir!
Weisst Du, ich bin doch so ein richtiger Anfänger, und ich blicke bei Deinem Script nicht durch!
Aber vielen Dank...
__________________
Worte haben Macht - nichts...
|
04.09.2007, 18:59:26
|
Senior Member
|
|
Registriert seit: Sep 2007
Ort: Potsdam
Alter: 55
Beiträge: 1.020
|
|
AW: Wie Array aufteilen?
Zitat:
Zitat von maiskolben
Aber das erscheint mir plausibeler als das Script von Dir!
Weisst Du, ich bin doch so ein richtiger Anfänger, und ich blicke bei Deinem Script nicht durch!
|
Hm, lass es mich so sagen: Dass Du Anfänger bist und nicht durchblickst, bedeutet nicht, dass weniger plausibel ist. Es heißt nur, dass Du es nicht beurteilen kannst.
Welchen Teil verstehst Du nicht?
Geändert von defabricator (04.09.2007 um 19:00:10 Uhr)
|
05.09.2007, 14:33:25
|
Junior Member
|
|
Registriert seit: Jun 2004
Beiträge: 473
|
|
AW: Wie Array aufteilen?
@defabricator
Zitat:
Zitat von defabricator
... nicht durchblickst, bedeutet nicht, dass weniger plausibel ist.
|
...damit hast du zweifelsohne Recht, aber
Zitat:
Zitat von defabricator
Welchen Teil verstehst Du nicht?
|
Den Teil an dem du fest machst, dass dein plausibler Ansatz weniger rumgewurstel ist als meiner...
Denn grunsätzlich läuft das Gleiche ab, ich verwende lediglich keine extra Funktion zur Bildung der Timestamps und krsort() bzw. jetzt array_multisort() statt deiner usort()-Custom-Funktion. Daran kann ich kein Problem erkennen! ...hast du damit irgendein "Style"-Problem?
PS:
Wenn man einem Anfänger Skripte zur Verfügung stellt und sich mit seinem Ansatz wichtig macht, kann man ihm ruhig dazuschreiben, dass einem fopen() auch ein fclose() zu folgen hat...
...nur mal so zum Thema "Style".
@maiskolben
Nun denn.. du wurstelst also auch lieber herum? ;-)
Die Timestamps sind alle gleich, weil immer die gleiche Uhrzeit verwendet wird. Dann eben doch mit array_multisort().
Wenn du das Ergebnis als 2D Array namens $elemente für dein Template brauchst, kann man das auch direkt reinschreiben...
...und laß bitte beim Übernehmen des Bsp. sowohl die Sortierfunktion als auch dein include() hinter der Schleife stehen, es reicht wenn diese beiden Zeilen einmal ausgeführt werden.
PHP-Code:
$elemente=array();
$ts_sort=array();
$zeilen=file('index.txt'); // Deine Datei
for($z=0;$z<count($zeilen);$z++)
{
$tarr=explode("|",$zeilen[$z]);
if($tarr[0]=='001')
{
$ts_arr=explode("/",$tarr[1]);
$tarr[1]=mktime(0,0,0,$ts_arr[1],$ts_arr[0],$ts_arr[2]);
$ts_sort[]=$tarr[1];
$elemente[]=$tarr;
}
}
array_multisort($ts_sort,SORT_DESC,$elemente);
// Template einbinden und Variablen ausgeben!
include ($_SERVER['DOCUMENT_ROOT']) . ('/template.html');
|
05.09.2007, 15:07:58
|
Senior Member
|
|
Registriert seit: Sep 2007
Ort: Potsdam
Alter: 55
Beiträge: 1.020
|
|
AW: Wie Array aufteilen?
Zitat:
Zitat von Raketenmann
Den Teil an dem du fest machst, dass dein plausibler Ansatz weniger rumgewurstel ist als meiner...
|
Nicht Dein rumgewurstel sondern das von maiskolben. Also nicht gleich auf den Schlips getreten fühlen, ok?
Zitat:
Zitat von Raketenmann
PS:
Wenn man einem Anfänger Skripte zur Verfügung stellt und sich mit seinem Ansatz wichtig macht, kann man ihm ruhig dazuschreiben, dass einem fopen() auch ein fclose() zu folgen hat...
...nur mal so zum Thema "Style".
|
Hm, wer macht sich denn hier nun wichtig? Uhhh... jetzt muss sich PHP selbst um die offene Resource kümmern. Das ist ja eine Katastrophe.
|
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 01:58:20 Uhr.
|