benua
benua

Reputation: 195

Generating randomized pairs of elements in php

I want to generate random pairs of elements and have this code:

<? 
$myarray1=array('1','2','3'); 
$myarray2=array('1a','2a','3a'); 

echo '<p>'.$myarray1[array_rand($myarray1)].'</p>'; 
echo '<p>'.$myarray2[array_rand($myarray2)].'</p>'; 
?>

but I get this as a result:

<p>3</p>
<p>2a</p>

or

<p>1</p>
<p>3a</p>

or

<p>2</p>
<p>1a</p>

etc.

and I want to only get certain pairs:

<p>2</p>
<p>2a</p>

or

<p>1</p>
<p>1a</p>

or

<p>3</p>
<p>3a</p>

etc.

how do I achieve that?

Upvotes: 0

Views: 118

Answers (3)

SOFe
SOFe

Reputation: 8214

You should only call array_rand once only.

<? 
$myarray1=array('1','2','3'); 
$myarray2=array('1a','2a','3a'); 

$rand = array_rand($myarray1); // assuming $myarray1 has the exactly same keys as $myarray2
echo '<p>'.$myarray1[$rand].'</p>'; 
echo '<p>'.$myarray2[$rand].'</p>'; 
?>

If they have different keys, you can try using array_values:

$myarray1 = ["a" => "1", "b" => "2", "c" => "3"];
$myarray2 = ["d" => "1a", "e" => "2b", "f" => "3c"];

$myarray1 = array_values($myarray1);
$myarray2 = array_values($myarray2);
$rand = array_rand($myarray1);
echo '<p>'.$myarray1[$rand].'</p>';
echo '<p>'.$myarray2[$rand].'</p>';

Upvotes: 2

neurotik
neurotik

Reputation: 1419

You are calling array_rand twice which is why you are getting random pairs. Assuming the two arrays are the same length (or have the same keys for an associative array) you could do something like this:

$key = array_rand($myarray1);
echo '<p>'.$myarray1[$key].'</p>'; 
echo '<p>'.$myarray2[$key].'</p>'; 

Upvotes: 1

CatalinB
CatalinB

Reputation: 581

$myarray1=array('1','2','3'); 
$myarray2=array('1a','2a','3a'); 

$key_rand = array_rand($myarray1);

echo '<p>'.$myarray1[$key_rand].'</p>'; 
echo '<p>'.$myarray2[$key_rand].'</p>'; 

use same key for both

Upvotes: 3

Related Questions