lese ich eine Textdatei Daten genannt, die Wie kann ich diese Textverarbeitung in PHP beenden?
#
# data formatted as
#
# email_address:number_of_orders:total_order_value
#
# This is dummy data
[email protected]:7:8.35
[email protected]:4:5.59
[email protected]:3:9.29
[email protected]:4:6.67
[email protected]:8:22.84
[email protected]:7:14.80
[email protected]:6:8.36
[email protected]:5:18.67
[email protected]:5:22.88
[email protected]:10:18.68
[email protected]:2:19.67
[email protected]:5:21.89
# end of data
ich diese Datei lesen möchten, wie
aussieht und erzeugen die Ausgabe HTML-Tabellen die wie+-----------------------------------------------+
| able.com |
+---------------+------------------+------------+
| [email protected] | 1 | 20.30 |
| [email protected] | 4 | 5.05 |
+---------------+------------------+------------+
| bodge.com |
+---------------+------------------+------------+
| [email protected] | 3 | 132.20 |
+---------------+------------------+------------+
Die Ausgabe sieht mit sollte in aufsteigender alphabetischer Reihenfolge der Domain sein, dh able.com, bodge.com, gmx.net usw., und für jede Domain sollten die Bestellungsdetails in aufsteigender alphabetischer Reihenfolge der Email-Adresse aufgelistet werden.
Dies muss mit PHP OO-Prinzipien geschehen, so dass es zuerst die Daten in eine Datenstruktur liest und dann die Daten an eine Funktion/Methode übergibt, die die formatierte Ausgabe erzeugt.
Die an die Funktion übergebenen Daten sollten ein assoziatives Array sein, das mit dem Domänennamen codiert ist. (z. B. $ orders ['able.com'] wären die Bestelldaten für Domäne 'able.com'). Jedes Element des Domänen-Arrays sollte ein Array von Bestelldaten für diese Domäne sein. Jedes Element der Auftragsdaten sollte eine Instanz einer Klasse sein, die Details zu diesem Datensatz enthält.
Die Ausgabe sollte nach Domänennamen und für jede Domäne per E-Mail Adresse sortiert werden.
Und bisher habe ich nur das getan.
<?php
$fp = fopen('./data', 'r');
while(!feof($fp)) //file pointer
{
$data = fgetc($fp); //read file char by char
if($data == '#' || $data == ' ')
{
$line = fgets($fp); //ignore line if $data = # or ' '
continue;
}
else
{
do
{
$line = fgets($fp); //pick one line which not started with # or not an empty line
$order = explode(':', $line);
}while($data == '\n');
$email = explode('@', $order[0]);
$user = $email[0];
echo "<strong>Email, ";
echo "Number of orders, Value</strong><br />";
foreach($order as $key => $val)
{
echo $val;
echo "<br />";
}
echo "<br />";
}
}
fclose($fp);
Ich bin sicher, das ist nicht der richtige Weg, es zu tun. Kann jemand irgendwelche Hinweise geben, um richtig vorzugehen?
Bevor jemand Ihnen sagt, dass Sie keine Daten in einer Textdatei speichern sollen, gibt es einen Grund, akademisch oder anders, warum Sie Daten in einer Textdatei speichern müssen/müssen? –
@WilliamPerron es ist offensichtlich, dass "OP" keine Kenntnis von "SQL" und ist Anfänger, so verwendet. Text-Dateien als Speicher. –
@GiulioBambini Ich möchte keine Annahmen treffen. Viele Tutorials springen ziemlich früh in MySQL-Datenbanken ein und es gibt möglicherweise Anforderungen/Einschränkungen, die uns nicht bekannt sind. –