在php中生成随机元素对

时间:2016-09-17 15:35:19

标签: php arrays random

我想生成随机元素对并拥有以下代码:

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

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

但我得到了这个结果:

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

or

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

or

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

etc.

我希望只获得某些对:

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

or

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

or

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

etc.

我该如何实现?

3 个答案:

答案 0 :(得分:3)

$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>'; 

为两者使用相同的密钥

答案 1 :(得分:2)

您只能拨打array_rand一次。

<? 
$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>'; 
?>

如果他们有不同的密钥,您可以尝试使用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>';

答案 2 :(得分:1)

你正在调用array_rand两次,这就是你得到随机对的原因。假设两个数组的长度相同(或者关联数组具有相同的键),您可以这样做:

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