2011-03-01 106 views
1

關於後得到一些隨機單詞了一個更大的字符串的問題,它已被翻譯:如何從字符串中隨機播放和回顯3個隨機單詞?

<?=__("water, chicken, banana, rice, bread, salt, cucumber, ananas, peach")?> 

在我的網站目前輸出:

water, kip, banaan, rijst, zout, komkommer, ananas, perzik 

現在想象我想只有3來自隨機的話。我怎麼做?

重要的是不要觸摸__(" & ")部分!當__($var)只能在__("word1, word2, word3")時轉換器無法處理。

我想最好是首先把結果轉換成字符串或數組(這是多遠我來了,請不要笑)

$translated = __("water, chicken, banana, rice, bread, salt, cucumber"); 
echo $translated; 
# shuffle & echo 3 items 

如何從這裏出發到隨機獲得3字出$entireString

更新

$array = explode(',', $translated); 
    $randomKeys = array_rand($array, 3); 
    $translated = ''; 
    foreach(array_keys($randomKeys) as $key){ 
     $translated .= $array[$key].' '; // use space or comma 
    } 

    echo $translated; 

回聲:water kip banaan始終。所以它似乎沒有好好洗牌?

回答

5

可以使用

$array = explode(',', $str); 
$randomKeys = array_rand($array, 3); 
$str = ''; 
foreach($randomKeys as $key){ 
    $str .= $array[$key].' '; // use space or comma 
} 
+0

'$ randomString = implode(','array_rand($ array,3));'這行看起來有錯誤,或者是dreamweaver的一個愚蠢的應用程序? – Sam 2011-03-01 14:33:22

+0

@Sam:這是''錯誤,我改變了它。 – Gaurav 2011-03-01 15:40:58

+0

@Gaurav,謝謝! +1,現在我該如何迴應? – Sam 2011-03-01 15:55:40

1

是否有可能存儲的值不是字符串,而是數組?如果你不能通過,爆炸它們,然後從數組中獲得一個隨機元素並翻譯那個元素。

例如:

$translated = __("water, soup, rice, peanutbutter"); 
$translatedWords = explode(',',$translated); 
shuffle($translatedWords); //Randomize them 

將輸出類似Soep, Rijst, Pindakaas, Water

(也__是一個功能比較奇怪的名字)

+1

其實'__'不是一個奇怪的名字。 '_'被gettext使用,並且由於這個函數做了一個類似的工作(翻譯的東西),我會說這個名字是足夠的。 – Artefact2 2011-03-01 13:52:28

+0

確實,它的時間很短=喜歡它! – Sam 2011-03-01 14:30:07

+0

我喜歡你的解決方案+1,但問題是隻得到3個項目,而不是整個字符串混洗。你如何在你的建議中實施選擇性的把握? – Sam 2011-03-01 14:35:16

2
function randomstr($str, $num = 3) { 
    $str = explode(',', $str); 
    return implode(',' array_rand($array, $num)); 
} 

Now :

<?=__(randomstr("water, chicken, banana, rice, bread, salt, cucumber, ananas, peach"))?> 

或者在function __

function __($string) { 
    $string = randomstr($string); 
    // more your code 
} 
+0

'__($ ...)'不允許寫在問題中。必須是單詞inbetween對不起,我不清楚(更新的問題) – Sam 2011-03-01 14:36:16

+0

@Sam你嘗試過第二個變體(函數__($字符串){')? – delphist 2011-03-01 14:51:39

+0

是的,這也不能在我的網站上工作。 relly只能觸及'@ translatedString',而不是__(「...」);部分。 – Sam 2011-03-01 15:38:51