Как перетасовать 3 случайных слова из строки? - PullRequest
1 голос
/ 01 марта 2011

вопрос о получении некоторых случайных слов из большой строки после это было переведено:

<?=__("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 всегда. так что, похоже, не тасует хорошо?

Ответы [ 3 ]

5 голосов
/ 01 марта 2011

вы можете использовать

$array = explode(',', $str);
$randomKeys = array_rand($array, 3);
$str = '';
foreach($randomKeys as $key){
  $str .= $array[$key].' ';  // use space or comma
}
2 голосов
/ 01 марта 2011
function randomstr($str, $num = 3) {
   $str = explode(',', $str);
   return implode(',' array_rand($array, $num));
}

Сейчас:

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

Или в function __:

function __($string) {
   $string = randomstr($string);
   // more your code
}
1 голос
/ 01 марта 2011

Можно ли хранить значения не в виде строки, а в виде массива? Если вы не можете просто взорвать их на ,, тогда получите случайный элемент из массива и переведите его.

Например:

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

Будет выводить что-то вроде Soep, Rijst, Pindakaas, Water

(Также __ - довольно странное имя для функции)

...