Toon posts:

[php] ik kom niet uit een wazig array-probleem

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hallo,

Ik heb een wazig array probleem.
Het zit zo:
bij het stemmen op het mooiste plaatje wordt de naam van het plaatje in een txtfile gedumpt.
Vervolgens wordt het txtfiletje gefilet (file) en die array heet data.
Door het aantal gelijke waarden van $data te bekijken moet ik dus kunnen zien hoeveel keer op op plaatje $data[$line] is gestemd.
Snappen jullie het nog?

Nu heb ik zitten klooien met foreach en array_count_values maar ik kom er niet uit. Kan iemand mij enev een hint geven?
Hier is het script vanaf waar de $data wordt aangemaakt.
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
33
34
35
<?
//data ophalen
    $data = file("poll.txt");
    $num_rows=count($data);
    
    //images tellen
    $images = array();
    $dir = opendir(getcwd());
    
    while($image = readdir($dir)) 
    {
        if(is_file($image) &amp;&amp; eregi(".png", basename($image))) $images[] = $image;
    }
    closedir($dir);
    $num_img = count($images);
    
    //aantal aparte votes uitrekenen
    $vote = array();
        //hier kom ik niet uit!    
        
    echo "</center>";//center niet mooi
    //percentages maken en site in elkaar rammen
    for($a=0;$a<$num_img;$a++)
    {
        $percent[$a] = ($vote[$a] / $num_rows) * 100;
        echo "[img]\"$images[$a]\"[/img]: ";
        for($q=0;$q<$percent[$a];$q++)
        {
            echo "[img]\"pixels.gif\"[/img]";
        }
        echo " [$images[$a]: $percent[$a]% van de stemmen.]<br>";
    }
    echo "Totaal $num_rows stemmen uitgebracht.</body></html>";
}
?>

Verwijderd

Zelf zou ik het als volgt op lossen:

Eerst bestand doorwandelen welke verschillende plaatjes er zijn. Die zet je met foreach in een array en met in_array kijk je of die al in je array voorkomt:
code:
1
array[image]

Daarna nog een keer het hele bestand doorlopen en dan array uitbreiden met aantal counts
code:
1
array[image][votecount]

krijg je dan...

Aan het einde heb je dan zoiets (schematisch):
code:
1
2
3
4
array[image][votecount]
    plaatje1 86
    plaatje2 3
    plaatje4 90

Hope this helps...

Verwijderd

Topicstarter
Op maandag 14 januari 2002 15:32 schreef Grofur het volgende:
[knip wazigheid eruit :)]
Hope this helps...
Not really. Ik moet een array van votes hebben die er alsvolgt uit ziet:

[code]
vote[ident] = int
|
|
----> ident correspondeerd met plaatje nummer
[code]

zodat ik deze
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
<?
for($a=0;$a<$num_img;$a++)    
{        
  $percent[$a] = ($vote[$a] / $num_rows) * 100;
  echo "[img]\"$images[$a]\"[/img]: ";
  for($q=0;$q<$percent[$a];$q++)        
  {            
     echo "[img]\"pixels.gif\"[/img]";
  }        
echo " [$images[$a]: $percent[$a]% van de stemmen.]<br>";    
}
?>

constructie kan maken.
:?

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Wat is precies het "formaat" van een vote in het poll.txt-bestand? Gewoon een getal? of imagenaam.png:getal ofzo?

* drm begrijpt niet helemaal waar je nou precies heen wilt :?

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • Pelle
  • Registratie: Januari 2001
  • Laatst online: 12:20

Pelle

🚴‍♂️

Op maandag 14 januari 2002 15:41 schreef daniel_hoenderdos het volgende:
Not really. Ik moet een array van votes hebben die er alsvolgt uit ziet:
code:
1
vote[ident] = int
Euhm, waarom vervang je in je code dan $vote[$a] dan niet door $array[$a]["votecount"]? Maakt niks uit namelijk.

Verwijderd

Topicstarter
de array is gewoon eendimentionaal:
PHP:
1
2
3
<?
$data = array ('imagenaam.png', 'images.png', 'imagenaam.png');
?>

array_count_values levert deze array op:
PHP:
1
2
3
<?
$count_values = array ('imagenaam.png => 2', 'images.png => 1');
?>

Hoe kan ik nou met die 1 en die 2 van $count_values aan de gang?
$count_values[0] levert niets op...

edit:
Stroke of genius... wacht even...


Waarden als $count_values[0] printen heeft geen zin.
De array ziet er volgens de print_r zo uit:
code:
1
Array ( [maraxus.png ] => 3 [birds.png ] => 2 [birds.pngbalduvian.png ] => 1 [balduvian.png ] => 6 [kjeldoranskyknight.png ] => 1 )

Verwijderd

Topicstarter
kick --^

niemand?

  • Tjark
  • Registratie: Juni 2000
  • Laatst online: 15-09 11:51

Tjark

DON'T PANIC

ahh... jij 'weet' zeg maar de namen an de plaatjes niet dus je weet niet hoe je bij die 1 en die 2 van $count_values aan de gang kan gaan? Is dat het? Vaag allemaal...

Maar je kunt dan toch array_keys opvragen?

of wil je die 1 en 2 opvragen?
Dan kun je toch gewoon de imagenaam invullen zoals je die ook bij je IMG-SRC tag invult?
PHP:
1
2
3
<?
$getalletje = $count_values["$image[$a]"];
?>

*insert signature here


Verwijderd

Dit zal vast niet zijn wat je bedoelt maar hier mijn poging.
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?
foreach($vote as $image => $votes)
{
    echo ("<table>
           <tr>
            <td>Plaatje
           </td>
            <td>Aantal stemmen
           </td>
          </tr>

            <tr>
             <td>[img]\"$image\">
[/img]
             <td>$votes
            </td>
             <td>".$votes / 100 * nog wat."
            </td>
           </tr>

          </table>\n");
} 
?>
Pagina: 1