[php] Probleem met rand_array

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • kazz1980
  • Registratie: Juni 2001
  • Laatst online: 19-08 22:44

kazz1980

Goh... Ik hier?

Topicstarter
Het script:
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
36
<?php
srand ((float) microtime() * 10000000); 

$talenarray = array("1", "2", "3","6","8");
$nieuwe_array=array();
if (array_search("2",$talenarray)){
    $pos=array_search("2",$talenarray);
    for($i=0;$i<$pos;$i++){
        //echo $i."<br>";
        array_push($nieuwe_array, $talenarray[$i]);
    }
    for($i=($pos+1);$i<6;$i++){
        //echo $i."<br>";
        array_push($nieuwe_array, $talenarray[$i]);
    }

echo $nieuwe_array[0]."<br>";
echo $nieuwe_array[1]."<br>";
echo $nieuwe_array[2]."<br>";
echo $nieuwe_array[3]."<br>";
echo $nieuwe_array[4]."<br>";
echo $nieuwe_array[5]."<br>";


    echo "2 staat er wel in!<p>";
    $random_array= array_rand($nieuwe_array,2);
    echo $random_array[0]."<br>";
    echo $random_array[1]."<br>";
}

if (array_search("5",$talenarray)){
    echo "5 staat er niet in";
}


?>


Output:
1
3
6
8


2 staat er wel in!
4
3


Ofwel de volgende waarden zitten in de array: 1,3,6 en 8. Ik vraag om er daar random 2 uit te halen en dan krijg ik telkens waarden tussen de 0 en 4 in plaats van waarden uit de array.
Zit ik me blind te staren? Kan geen fout ontdekken...en heb deze functie toch al wel vaker, met succes, gebruikt!

hier stond iets interessants, maar het is even weg...


Acties:
  • 0 Henk 'm!

Verwijderd

volgens mij moet je
code:
1
for($i=0;$i<$pos;$i++){

wijzigen in
code:
1
for($i=0;$i<$pos+1;$i++){

Acties:
  • 0 Henk 'm!

  • kazz1980
  • Registratie: Juni 2001
  • Laatst online: 19-08 22:44

kazz1980

Goh... Ik hier?

Topicstarter
Verwijderd schreef op 09 januari 2004 @ 12:41:
volgens mij moet je
code:
1
for($i=0;$i<$pos;$i++){

wijzigen in
code:
1
for($i=0;$i<$pos+1;$i++){
Nee want het is juist de bedoeling dat positie 2 NIET inde nieuwe array komt.
En veranderd niks aan het feit dat de data in de random array totaal andere gegevens bevat dan de data in de nieuwe array...

hier stond iets interessants, maar het is even weg...


Acties:
  • 0 Henk 'm!

Verwijderd

sorry, had je post niet goed gelezen. array_rand levert geen de waardes uit de oorspronkelijke array, maar de random indexen uit die array. je zou dus zoiets moeten doen als
PHP:
4
5
6
7
8
9
10
    $number = 2;
    $random_array_index= array_rand($nieuwe_array,$number);
    print_r ( $random_array_index);
    for ($i=0; $i<$number; $i++) {
        $random_array[] = $nieuwe_array[$random_array_index[$i]];
    }
    print_r ($random_array);

bovendien laat je je 2e loop 1 slag te ver door lopen. deze moet dus zijn
code:
1
for($i=($pos+1);$i<5;$i++){

Acties:
  • 0 Henk 'm!

  • kazz1980
  • Registratie: Juni 2001
  • Laatst online: 19-08 22:44

kazz1980

Goh... Ik hier?

Topicstarter
ow.oeps...je hebt gelijk!!
Heel dom. blind gestaard.

[ Voor 95% gewijzigd door kazz1980 op 09-01-2004 13:34 ]

hier stond iets interessants, maar het is even weg...