Gå til innhold

Telle antall gjentagelser i array


Anbefalte innlegg

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 :p

Lenke til kommentar
Videoannonse
Annonse

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? :p

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 av Famen
Lenke til kommentar

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 av OISNOT
Lenke til kommentar
<?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

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...