2017-10-16 61 views
-3

根据array_rand()的先前结果,我需要回显一系列四个字符串。我有这个,到目前为止:PHP:根据另一个以前的值从数组中回收随机值,也是随机的

<?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,word4,的word5,word7”,其中那些话实际上是涉及到主要标题。

(字组与组的不同而不同。我只是用相同的名称,使之更容易理解。)

预计呼应不同的值,每次我刷新页面。

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

当刷新,应该呼应的另一个名称,而另一组与该标题4个字。

P.S .: Srsly,为什么倒票?至少解释一下。

+2

存储数据不同,这个问题几乎解决了自身:'$ data = ['title1'=> ['word1',...],...]'。 – deceze

+1

如果你有“编号”的变量名,那么你通常可以让你的生活更容易使用一个体面的数组......重建你的标题词数组为'$ title_words = array( 'title1'=> array('word1',' word2','word3','word4','word5','word6','word7'), 'title2'=> array('word1','word2','word3','word4','word5 ','word6','word7'), 'title3'=>('word1','word2','word3','word4','word5','word6','word7'),title1 '=> array('word1','word2','word3','word4','word5','word6','word7'),' );' –

+0

问题是......?我只是将你的代码复制粘贴到我的PHP,它的工作原理。纯粹主义者会建议修改(如多维数组),但它确实输出了你想要的。 – Nic3500

回答

1

正如所解释的意见,以解决这一问题的最好办法是存储你的话在一个二维数组,这样的:

$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_title]]作为你的话子阵列。

但是,如果你不能(或绝对不想)使用二维数组,你总是可以使用variable variables

<?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>"; 

?> 
+0

就是这样。非常感谢@ roberto06。 唯一必要的改变 - 但那是在我身上 - 用echo $ titles替换echo $ rand_title [$ rand_title] –