PHP:根据之前的另一个值(也是随机值)从数组中回显随机值

PHP:根据之前的另一个值(也是随机值)从数组中回显随机值,php,arrays,random,Php,Arrays,Random,根据数组_rand()的先前结果,我需要回显一系列四个字符串。到目前为止,我有以下几点: <?php $titles = array('title1','title2','title3','title4'); $title1_words = array('word1','word2','word3','word4','word5','word6','word7'); $title2_words = array('word1','word2','word3','word4','word5

根据数组_rand()的先前结果,我需要回显一系列四个字符串。到目前为止,我有以下几点:

<?php

$titles = array('title1','title2','title3','title4');

$title1_words = array('word1','word2','word3','word4','word5','word6','word7');
$title2_words = array('word1','word2','word3','word4','word5','word6','word7');
$title3_words = array('word1','word2','word3','word4','word5','word6','word7');
$title4_words = array('word1','word2','word3','word4','word5','word6','word7');

$rand_title = array_rand($titles, 1);
echo $rand_title . "<br>";


//print 4 random words from one group
$rand_words = array_rand($title1_words, 4);
echo $title1_words[$rand_words[0]] . "<br>";
echo $title1_words[$rand_words[1]] . "<br>";
echo $title1_words[$rand_words[2]] . "<br>";
echo $title1_words[$rand_words[3]] . "<br>";

?>

我需要输出类似于:

“标题2

单词2,单词4,单词5,单词7“,这些单词实际上与主标题相关

(每个组的单词都不一样。我只是用了相同的名字让它更容易理解。)

每次我刷新页面时,它都会回显不同的值

//编辑以作进一步解释//

当它刷新时,它应该回显另一个标题以及与该标题相关的另一组4个单词


附言:斯利,为什么会有反对票?至少解释一下。

如评论中所述,处理此问题的最佳方法是将单词存储在二维数组中,如下所示:

$words = array(
    'title1' => array('word1','word2','word3','word4','word5','word6','word7')),
    'title2' => array('word1','word2','word3','word4','word5','word6','word7')),
    'title3' => array('word1','word2','word3','word4','word5','word6','word7')),
    'title4' => array('word1','word2','word3','word4','word5','word6','word7')),
);
然后使用
$words[$titles[$rand\u title]]
作为单词子数组

但是,如果您不能(或绝对不想)使用二维数组,则始终可以使用

<?php

$titles = array('title1','title2','title3','title4');

$title1_words = array('word1','word2','word3','word4','word5','word6','word7');
$title2_words = array('word1','word2','word3','word4','word5','word6','word7');
$title3_words = array('word1','word2','word3','word4','word5','word6','word7');
$title4_words = array('word1','word2','word3','word4','word5','word6','word7');

$rand_title = array_rand($titles, 1);
echo $rand_title . "<br>";

$title = $titles[$rand_title]; // should be title2, for instance
$words_array = ${$title . '_words'}; // should be $title2_words, for instance

$rand_words = array_rand($words_array, 4);
echo $words_array[$rand_words[0]] . "<br>";
echo $words_array[$rand_words[1]] . "<br>";
echo $words_array[$rand_words[2]] . "<br>";
echo $words_array[$rand_words[3]] . "<br>";

?>


以不同的方式存储数据,问题几乎自行解决:
$data=['title1'=>['word1',…],…],…]
。如果您有“编号”的变量名,则通常可以使用一个像样的数组使您的生活更轻松。。。将标题词数组重新构建为
$title\u words=array('title1'=>array('word1'、'word2'、'word3'、'word4'、'word5'、'word6'、'word7')、'title2'=>array('word1'、'word2'、'word3'、'word4'、'word5'、'word6'、'word7')、'title3'=>('word1'、'word2'、'word4'、'word5'、'word6'、'word4')、'title4')('word1'、'word2'、'word3'、'word4'、'word5'、'word6'、'word7');
问题是…?我只是复制粘贴了你的代码到我的PHP中,效果很好。纯粹主义者会建议修改(如多维数组),但它会输出你想要的。@Nic建议多维数组不是“纯粹主义者”建议,这是一个关于如何解决问题的建议。只是指出他的代码确实有效。这是一个新手方法。就是这样。非常感谢@roberto06。唯一需要的改变——但那是我的——是用echo$titles[$rand\u title]替换echo$rand\u title]