0

如何在单行中随机混杂 PHP 中由 ',' 内爆的字符串(例如:a,b,c = c,b,a)?

这是一个例子

srand((double)microtime*1000000);
$foo=array(
  a => "a",
  b => "b",
  c => "c");
echo "The jumbled comma separated values are: ".randomlyjumble(.implode(",",$foo))."<br />";
4

2 回答 2

2

爆破前使用shuffle。请记住,shuffle通过引用获取其参数进行内联修改,因此您需要在单独的行上进行。

于 2013-05-12T23:14:17.287 回答
0

如果数组内容仅包含长度为 1 的字符,您可以使用以下内容:

$foo=array('a', 'b', 'c');
echo implode(',', str_split(str_shuffle(implode('', $foo)),1));

如果字符的长度> 1,那么您需要使用随机播放,这里有一个神秘的解决方法可以在一行中使用它:

echo 'hello '.implode(',',array_map(function($w)use(&$foo){shuffle($w);return $w;}, array_map(function($v)use(&$foo){return array($foo);}, $foo)[0])[0]).' world';

请注意,您需要PHP 5.4+才能执行此操作。

未压缩的形式:

echo 'hello '.
    implode(',',
        array_map(function($w)use(&$foo){
            shuffle($w);
            return $w;
        },
            array_map(function($v)use(&$foo){
                return array($foo);
            }, $foo)
        [0])[0]
        )
    .' world';

最好的方法是为此创建一个函数,就像@moonwave99 在评论中所说:

echo implode(',', array_random_sort($foo));
function array_random_sort($v){shuffle($v);return($v);}
于 2013-05-13T00:09:44.670 回答