Avatar billede Slettet bruger
20. april 2011 - 18:52 Der er 7 kommentarer

Array værdier

Hej, jeg ville høre om der var en funktion der kunne returnere antallet af gange en specifik værdi forekom i et array.
Jeg har prøvet med 1 funktion (Kan ikke helt huske hvad funktionen hedder) men den returnerede antalne hver værdi i arrayet forekom, ikke kun den værdi jeg ønskede at søge efter.
Tror ikke det er muligt at definere en specifik værdi, den skal finde i arrayet.

Men hvis nogle af jer, kender en nem og effektiv måde til at gøre dette, så fyr løs.

-Jonas
Avatar billede phillips Nybegynder
20. april 2011 - 19:46 #1
Avatar billede phillips Nybegynder
20. april 2011 - 19:48 #2
Ovenstående funktion returnerer et array med de keys, der indeholder en angiven værdi. Tæl størrelsen af det array med sizeof()
Avatar billede repox Seniormester
20. april 2011 - 20:37 #3

function count_value( $array, $value )
{
  $count = 0;
  foreach( $array as $aValue )
  {
    if( $aValue == $value )
      $count++;
  }
  return $count;
}


og brug nu count() i stedet for sizeof() - der er ingen grund til at bruge alias-funktioner...
Avatar billede phillips Nybegynder
20. april 2011 - 20:57 #4
Jeg ville nu stadig bruge array_keys, og gerne med count() - det er væsentligt hurtigere end at lave en løkke. Men vi taler vist mikrosekunder her :-)
Avatar billede phillips Nybegynder
20. april 2011 - 20:59 #5
Eller tager jeg fejl? Er det som regel ikke hurtigere at bruge indbyggede funktioner til den slags fremfor egne, når der er tale om løkker? repox?
Avatar billede Slettet bruger
20. april 2011 - 21:31 #6
Phillips smid et svar, sad ellers og kiggede på de forskellige array funktioner tidligere, men må have klikket mig forbi den for hurtigt.
Tusind tak for hjælpen begge, men holder mig til den nemme løsning, da jeg netop ville undgå længere funktioner som den du har lavet repox.
For hvis kortere kode kan gøre det, tager jeg hellere det :-)

Tusind tak for hjælpen!

-Jonas
Avatar billede repox Seniormester
20. april 2011 - 21:36 #7
Det er næppe et reelt benchmark spørgsmål - ofte vil du alligevel skulle behandle resultaterne fra de indbyggede funktioner, hvorfor det for mig er ligegyldigt om jeg muligvis kan spare en marginelt ubetydelig forskel i eksekveringstiden.

For mig er det vigtigt at løse tingene på en intuitiv måde - og hvis jeg får et faktisk problem med min benchmarking, vil jeg måske begynde at gå op i om jeg kan spare noget ved at bruge et par indbyggede funktioner og behandle det resultat fremfor min egen funktion.

Så i sidste ende er det nok mere et spørgsmål om holdning.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester