Wackamole Skrevet 18. november 2008 Del Skrevet 18. november 2008 hei, som topic sier vil jeg telle antall gjentagelser i et array... la oss si at jeg har 4 ip'er, og to av disse er like, da skal scriptet skrive ut 2, også 0 hvis ingen er like... Hvis dette er vannskelig, så vil jeg heller at hvis to er like så skal scriptet hoppe over den ene, og skrive ut bare en ip adresse, istedenfor to.. hvis dere skjønner Hilsen Fredrik PS: beklager hvis det er dårlig formulert, klokka er tross alt 4 Lenke til kommentar
Jonas Skrevet 18. november 2008 Del Skrevet 18. november 2008 foreach ( $array as $val ) $count[$val]++; prinr_r ( $count ); Lenke til kommentar
OISNOT Skrevet 18. november 2008 Del Skrevet 18. november 2008 (endret) array_count_values for å finne gjentakelser. array_unique hvis du vil skrive ut unike verdier uten å sjekke om noen gjentaes. Endret 18. november 2008 av OISNOT Lenke til kommentar
Wackamole Skrevet 18. november 2008 Forfatter Del Skrevet 18. november 2008 (endret) har prøvd og få array_count_values til og funke med kommer bare med dette... Array ( [17 - 11 - 2008 ] => 1 [ 85.252.27.144 ] => 1 ) 85.252.27.144 Array ( [17 - 11 - 2008 ] => 1 [ 85.252.27.144 ] => 1 ) 85.252.27.144 Array ( [17 - 11 - 2008 ] => 1 [ 85.252.27.144 ] => 1 ) 85.252.27.144 Den skriver bare ut "1" uansett om hvor mange like det er.. EDIT: kanskje det hjelper med litt kode? while (!feof($file_handle) ) { $line_of_text = fgets($file_handle); $parts = explode('>->', $line_of_text); $count_array = array_count_values($parts); echo $parts[1]."<br>"; print_r($count_array)."<br>"; } Endret 18. november 2008 av Famen Lenke til kommentar
OISNOT Skrevet 18. november 2008 Del Skrevet 18. november 2008 (endret) Erm ... du bruker array_count_values i en loop der du leser en linje som da bare har en av hver verdi. Antar at en linje er lik: 17 - 11 - 2008>->85.252.27.144 Hvis den er motsatt, bytt rundt på 1 og 0 på respektive steder i eksempelet under. Du skal da ha ut unike IP addresser? while (!feof($file_handle) ) { $line_of_text = fgets($file_handle); $parts = explode('>->', $line_of_text); $ips[$parts[1]]++; // uten dato $ips[$parts[1]] = $parts[0]; // med siste leste dato som da er siste hit hvis log filen legges til med append (som eg antar den gjør). $ips[$parts[1]][] = $parts[0]; // med alle datoene $ips[$parts[1]][$parts[0]]++; // med antall hit hver dato } Bare for å være helt klar, bare bruk en av de $ips... eksemplene. array_count_values er bedre når du allerede har dataen i minnet, gjerne lest av en eksisterende funksjon. Endret 18. november 2008 av OISNOT Lenke til kommentar
Wackamole Skrevet 18. november 2008 Forfatter Del Skrevet 18. november 2008 Tusen hjertelig! Lenke til kommentar
ThomasQ Skrevet 18. november 2008 Del Skrevet 18. november 2008 <?php // Answers Array $array = array('a', 'b', 'a', 'a', 'c', 'a', 'd', 'a', 'c', 'd'); // Start Count Function function count_repeat_values($needle, $haystack){ $x = count($haystack); for($i = 0; $i < $x; $i++){ if($haystack[$i] == $needle){ $needle_array[] = $haystack[$i]; } } $number_of_instances = count($needle_array); return $number_of_instances; } echo count_repeat_values('a', $array); // will return the value 5 ?> Lenke til kommentar
OISNOT Skrevet 18. november 2008 Del Skrevet 18. november 2008 <?php $array = array('a', 'b', 'a', 'a', 'c', 'a', 'd', 'a', 'c', 'd'); $counted = array_count_values($array); echo $counted['a']; Der fikk eg vist den funksjonen ja Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå