如何在单行中随机混杂 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 />";
爆破前使用shuffle
。请记住,shuffle
通过引用获取其参数进行内联修改,因此您需要在单独的行上进行。
如果数组内容仅包含长度为 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);}