2017-10-16 53 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] –