Statistik aus TXT-Datei

Hallo.

Ich hab mal wieder ein problem.
ich möchte aus einer txt-datei eine statistik erstellen und zwar lese ich die txt-datei so ein:

$handle = fopen("shouts.txt","r");

while(!feof($handle))
{
 $row = fgets($handle,999999);
 list($names[],$comments[]) = split("\|",$row);
}

fclose($handle);

ich hab jetzt in den arrays $names[] die jeweiligen namen der leute, die einträge eingefügt haben.
nun möchte ich $namen durchsuchen und zwar mit dem array_search().
jedoch, wenn ich das mit einer forschleife durchlaufe, kommt immer folgender fehler…

array\_search() [function.array-search]: Wrong datatype for second argument in C:\Inetpub\wwwroot\test.php on line 22

die zeile 22 sieht so aus:

$ergebnis = array\_search($search,$names[$i]);

also heisst das für mich, $names[$i], darf da nicht drinnen stehen.
Aber wie kann ich jetzt den wert $search = „sm“ im array suchen, jede einzelne array-zeile soll nach „sm“ durchsucht werden und wenn vorhanden $counter++;

bitte um hilfe.

gruss,
sebastian

Hallo Was möchtest du den genau wissen?

$handle = fopen(„shouts.txt“,„r“);

while(!feof($handle))
{
$row = fgets($handle,4096);
$arr = explode("|",$row);
if(trim($arr[0]) == ‚sm‘) {
mache was…
}
}

fclose($handle);

so würde ich das machen…
oder habe ich das was du machen möchtest falsch verstanden?

Gruß
Phillip

Hallo Phillip.

Was möchtest du den genau wissen?

Wie beschrieben…ich möchte alle Elemente zählen in einem Array $names, die „sm“ beinhalten…Also das ich sehe, wer wieviele Einträge gepostet hat!!

$handle = fopen(„shouts.txt“,„r“);

while(!feof($handle))
{
$row = fgets($handle,4096);
$arr = explode("|",$row);
if(trim($arr[0]) == ‚sm‘) {
mache was…
}
}

fclose($handle);

wenn ich jetzt deinen code ändere und zwar so:

<?php $handle = fopen("shouts.txt","r");<br />$counter = 1;
while(!feof($handle))
{
$row = fgets($handle,4096);
$arr = explode("\|",$row);
if(trim($arr[0]) == 'sm') {
$counter++;
}
}

fclose($handle);
echo $counter;
?\>

kommt bei echo $counter = 1, wie ganz oben definiert…also heisst das jetzt er findet den wert sm nicht oder deine prozedur bringt nicht mein ergebnis.

so würde ich das machen…
oder habe ich das was du machen möchtest falsch verstanden?

ich denke du hast mich schon richtig verstanden.
einen wert in diesem fall „sm“ im array suchen, wenn gefunden, counter + 1, Zeile für Zeile auslesen und wenn gefunden, addieren.

Hoffe du verstehst mich.

Gruss,
Sebastian

<?php $handle = fopen("shouts.txt","r");<br />$counter = 1;
while(!feof($handle))
{
$row = fgets($handle,4096);
$arr = explode("\|",$row);
if(strpos($arr[0],'sm') !== false) {
$counter++;
}
}

fclose($handle);
echo $counter;
?\>

Sollte das gewünschte ergebniss bringen.

Gruß
Phillip

im array_search wird nur der genaue wert gefunden

also wenn array(1 => ‚sma‘, 2 => ‚smb‘ 3 => ‚smc‘)

würde ein array_search auf sm kein ergebniss bringen.

nur wenn array(1 => ‚sm‘)

dann würde array_search treffen.

Gruß
Phillip

Hallo Phillip.

<?php :
$handle = fopen("shouts.txt","r"); $counter = 1; while(!feof($handle)) { $row = fgets($handle,4096); $arr = explode("\|",$row); if(strpos($arr[0],'sm') !== false) { $counter++; } } fclose($handle); echo $counter; ?\> Sollte das gewünschte ergebniss bringen.

Du hast vollkommen recht, dieser code liefert mein ergebnis…jedoch noch als anmerkung. $counter = 0 setzen und nicht = 1; denn sonst ist der counter um 1 zu hoch… sry mein fehler… :smile:

Vielen vielen vielen lieben dank für die superschnellen Rückantworten.

Gruss,
Sebastian

im array_search wird nur der genaue wert gefunden

also wenn array(1 => ‚sma‘, 2 => ‚smb‘ 3 => ‚smc‘)

würde ein array_search auf sm kein ergebniss bringen.

nur wenn array(1 => ‚sm‘)

dann würde array_search treffen.

k…verstanden…vielen dank für die erklärung, wie siehts mir gross / kleinschreibung aus?

Kann ich da eigentlich nicht auch so suchen „*sm*“ ???

im array_search wird nur der genaue wert gefunden

also wenn array(1 => ‚sma‘, 2 => ‚smb‘ 3 => ‚smc‘)

würde ein array_search auf sm kein ergebniss bringen.

nur wenn array(1 => ‚sm‘)

dann würde array_search treffen.

k…verstanden…vielen dank für die erklärung, wie siehts mir
gross / kleinschreibung aus?

unter linuxservern devinitiv case sensitiv
unter windows servern keine ahnung

Kann ich da eigentlich nicht auch so suchen „*sm*“ ???

nein, array_search kennt keine wildcards

Gruß
Phillip