我想生成随机元素对并拥有以下代码:
<?
$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.
我该如何实现?
答案 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>';