[php] unieke waarden in array tellen

Pagina: 1
Acties:
  • 145 views sinds 30-01-2008
  • Reageer

  • kroeske
  • Registratie: Mei 2000
  • Laatst online: 14-09 11:45
ik zit met een klein probleempje met een array, ik wil namelijk vanuit onderstaande array (is variabel) gaan kijken hoevaak een waarde er in voorkomt en deze gaan echo'en dus dat er bijvoorbeeld Shrek (20) komt te staan

het enige is dat ik ondanks verschillende search en manual pages door gelezen te hebben niet iets kan vinden hoe ik dit het beste aan kan passen, iemand hier die me opweg kan helpen?

de print_r van de array staat hier

  • MadMurdock
  • Registratie: Oktober 2000
  • Niet online
PHP:
1
2
3
4
5
<?
            $sql="SELECT * FROM dvd WHERE naam_product LIKE '%$naam%'";
            $laden=mysql_query ($sql);
            $aantal=mysql_num_rows($laden);
?>

zoiets?

Verwijderd

edit:
laat maar.

Geen idee. :?

Verwijderd

Dat is 'em!

  • Pelle
  • Registratie: Januari 2001
  • Laatst online: 18:23

Pelle

🚴‍♂️

Op woensdag 02 januari 2002 16:41 schreef MadMurdock het volgende:
PHP:
1
2
3
<?
  // blaat
?>

zoiets?
Wat is dat nou weer voor onzin? Hij heeft een array, en rept met geen woord over een query.

Waarom loop je met een foreach niet gewoon door die array heen, en houdt in een tweede 2-dimensionale array bij hoeveel keer je een woord bent tegengekomen? Niet alle functies zijn voorgebakken hoor...

Pseudo
code:
1
2
3
4
5
6
7
8
Voor elk array-element
  Kijk of element zelf een array is
  Zo ja roep de functie recursief aan
  Zo nee kijk in de array met gevonden woorden of hij daar al in staat
    Zo nee voeg het dan toe en zet het totaal op 1
    Zo ja tel dan 1 bij het betreffende totaal op
  Retourneer de array met gevonden woorden & aantallen
The end

/edit
Er is dus wel een voorgebakken functie voor :+

  • kroeske
  • Registratie: Mei 2000
  • Laatst online: 14-09 11:45
dennisdotcom:
dat zou um idd moeten zijn, maar het is een 2 dimensionale array (zeg je dat zo?)

krijg nu als error:
Warning: Can only count STRING and INTEGER values! in d:\www\harrypotter\more.php on line 11
:'(

edit:

ga eens kijken wat ik van de pseudo kan bakken:)

  • Pelle
  • Registratie: Januari 2001
  • Laatst online: 18:23

Pelle

🚴‍♂️

Op woensdag 02 januari 2002 16:48 schreef kroeske het volgende:
dat zou um idd moeten zijn, maar het is een 2 dimensionale array (zeg je dat zo?)
Nee, ik heb het over de array waarin je die woorden zet en telt.
krijg nu als error:
Warning: Can only count STRING and INTEGER values! in d:\www\harrypotter\more.php on line 11
:'(
Komt omdat je een multidimensionale array hebt. Combineer deze functie even met mijn pseudo-code (kijk dus voor elk element of het een array is of niet, zo ja, voer op die array dan weer die array_count uit, etc).

Harry Potter? Brrrrrrr

/edit
tipje: http://www.php.net/is_array

  • kroeske
  • Registratie: Mei 2000
  • Laatst online: 14-09 11:45
volgens mij is het nu redelijk gelukt:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<?
$query=mysql_query("select $field as dis from $table where geslacht='$geslacht'");
$num=mysql_num_rows($query);
for ($i=0; $i<$num; $i++){
    $row=mysql_fetch_array($query);
    $array[$i]=explode(",", $row[dis]);
}

$count = array();
for ($a=0; $a<count($array); $a++){
while (list($k, $v) = each($array[$a])){
$count[$v]++;
}
}
function print_array($array,$level){

    if (!is_array($array))
        return 0;

    reset($array);
    while ( list($key, $value) = each($array) ) { 
        for ($i = 0; $i < $level; ++$i){
  echo "&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;";
}
        echo "film: ".$key." ($value)<br>";
        if (is_array($value))
            print_array($value,$level+1);
    }
}
$total=array_unique($count);
print_array($total, 0);
?>

ben er nog niet helemaal 100% zeker van, maar iig een aardig eind opweg, tnx alvast allemaal:)
Pagina: 1