Reputation: 27087
$apple="";
$banana="";
$apple="Red";
$banana="Blue";
$random(rand($apple, $banana);
echo $random;
How can I select a random string (fast) via PHP?
Upvotes: 18
Views: 31373
Reputation: 1011
Ran into this old question that tops google's results. You can have more than two options and still get it all on one line.
echo ['green', 'blue', 'red'][rand(0,2)];
Upvotes: 6
Reputation: 14863
The function rand()
has two parameters: a lower-limit for a random number and an upper limit. You can not use variables like that because it is not the way the function works.
Take a look at the documentation:
http://php.net/rand
A simple way to achieve what you want is this:
$array = array();
$array[0] = 'banana';
$array[1] = 'orange';
$randomSelected = $array[rand(0,(count($array)-1))];
As far as I've read, this solution is faster than array_rand()
. I can see if I can find the source of that.
Upvotes: 2
Reputation: 21553
The PHP rand()
function takes two numbers as input to form the range to pick a random number from. You cannot feed it strings.
See the PHP manual page for rand()
.
You can use array_rand()
:
$strings = array(
'Red',
'Blue',
);
$key = array_rand($strings);
echo $strings[$key];
Another option is to use shuffle()
.
$strings = array(
'Red',
'Blue',
);
shuffle($strings);
echo reset($strings);
Upvotes: 32
Reputation: 38147
Use an array :
$input = array("Red", "Blue", "Green");
echo $input[array_rand($input)];
Upvotes: 13
Reputation: 88647
array_rand()
is probably the best way:
$varNames = array('apple','banana');
$var = array_rand($varNames);
echo ${$varNames[$var]};
Upvotes: 3