Hoi,

Ik heb voor een script nodig dat een getal (bijvoorbeeld 5) gesplitst word in 1, 2, 3, 4 en 5. Dit is niet zo lastig, ik heb gewoon een while loop gemaakt. Nu wil ik alleen dat er 2 van de 5 (bijvoorbeeld) random gekozen worden en dat daar nog iets achter komt. Dus dit is wat ik wil als output:

5. Gekozen
4.
3. Gekozen
2.
1.

Hoe is dit het beste mogelijk?

Alvast bedankt :)
<?php
// array grootte
$getal = 5;
// aantal dat gekozen moet worden
$tekiezen = 2;
// tekst
$waarde = 'Gekozen';
// het array maken
$array = range(0, $getal);
// de nul waarde verwijderen
unset($array[0]);
// for loop van het aantal
for($i=0; $i<$tekiezen; $i++)
{
do
{
// random kiezen
$rand = rand(1, $getal);
} // doorgaan als reeds gekozen
while($array[$rand] == $waarde);
// gekozen in het array zetten
$array[$rand] = $waarde;
}
// resultaat
echo '<pre>'.print_r($array,true).'</pre>';
?>
Dankjewel, het werkt!

Is het ook mogelijk om meerdere dingen te krijgen?
Dus dat je array er zo uitziet:

Array
(
[1] => 1
[2] => 3
[3] => 3
[4] => 2
[5] => 1
[6] => 3
[7] => 2
[8] => 2
[9] => 1
)
<?php
// het array maken
$array = range(0, $getal);
// de nul waarde verwijderen
unset($array[0]);
?>

Waarom dan niet:
<?php
// het array maken
$array = range(1, $getal);
?>

[size=xsmall]Toevoeging op 15/07/2014 19:33:00:[/size]

Luit Hollander op 15/07/2014 19:20:16

Dankjewel, het werkt!

Is het ook mogelijk om meerdere dingen te krijgen?
Dus dat je array er zo uitziet:

Array
(
[1] => 1
[2] => 3
[3] => 3
[4] => 2
[5] => 1
[6] => 3
[7] => 2
[8] => 2
[9] => 1
)


<?php
$max = 5;
$aantal_in_array = 10;
array_fill(0, $aantal_in_array, array_rand(range(1, $max));
?>

Eddy E op 15/07/2014 19:30:37

<?php
// het array maken
$array = range(0, $getal);
// de nul waarde verwijderen
unset($array[0]);
?>

Waarom dan niet:
<?php
// het array maken
$array = range(1, $getal);
?>


Ik wilde beginnen met key 1 en niet met key 0
Eddy E op 15/07/2014 19:30:37



Ik bedoel niet dat het random is, maar bijvoorbeeld dit

$aantal1 = 2;
$aantal2 = 1;
$aantal3 = 5;

Array
(
[1] => 1
[2] => 3
[3] => 3
[4] => 2
[5] => 3
[6] => 1
[7] => 3
[8] => 3
)

Dus dat er echt 5 keer 3 bij een random getal komt.

Alvast bedankt!
<?php

// welke waarde je hoevaak voor wilt laten komen
$values = array(
'1' => 2,
'2' => 1,
'3' => 5
);

$array = array();
foreach( $values as $k => $v )
{
for( $i=0; $i<$v; $i++ )
{
$array[] = $k;
}
}

shuffle( $array);

var_dump( $array );
/*
array (size=8)
0 => int 3
1 => int 3
2 => int 2
3 => int 3
4 => int 1
5 => int 3
6 => int 3
7 => int 1
*/
?>
Dankjullie wel, het is gelukt!

Reageren