How to Shuffle and Echo 3 Random Words out of a St

2019-05-31 02:52发布

a question about getting some random words out of a bigger string after it has been translated:

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

on my site currently outputs:

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

now imagine I want to get just 3 words from that on random. How do I do that?

It's important not to touch the words parts inside __(" & ") part! The translater cannot process when __($var) but ONLY when __("word1, word2, word3").

I imagine the best is to first put the the outcome into a string or array (this is how far I came please don't laugh)

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

How do I proceed from here to randomly get 3 words out of $entireString ?

update

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

    echo $translated;

echos: water kip banaan always. so it does not seem to shuffle well?

3条回答
一夜七次
2楼-- · 2019-05-31 03:32

Would it be possible to store the values not as string, but as an array? If you cant just explode them by , then get a random element from the array and translate that one.

For example:

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

Would output something like Soep, Rijst, Pindakaas, Water

(Also __ is quite an odd name for a function)

查看更多
我欲成王,谁敢阻挡
3楼-- · 2019-05-31 03:35

you can use

$array = explode(',', $str);
$randomKeys = array_rand($array, 3);
$str = '';
foreach($randomKeys as $key){
  $str .= $array[$key].' ';  // use space or comma
}
查看更多
Animai°情兽
4楼-- · 2019-05-31 03:39
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"))?>

Or in function __:

function __($string) {
   $string = randomstr($string);
   // more your code
}
查看更多
登录 后发表回答