0

我有一个大约 1000 个值的数组,我刚刚使用 shuffle() 对它们进行了洗牌。现在我想回应洗牌的结果。但这里有一个问题,可以在不循环数组或显示数组“语法”的情况下完成吗?

IE:

<?php
    $myarray = array('a','b','c','d');
    shuffle($myarray);
    echo array_echo_vals_only($myarray);
    /*
    should echo: dbca
    */
?>
4

2 回答 2

5

只需使用Implode

echo implode($myarray);

或者只是减少数组array_reduce

echo array_reduce($myarray, function($a,$b){$a .= $b; return $a;});

玩弄vsprintf

echo vsprintf(str_repeat("%s", count($myarray)), $myarray);

我们也有一些疯狂的方式..

echo preg_replace("/\W/", "", json_encode($myarray));

或者

echo str_replace(array("]","[","\"",","), "", json_encode($array));

我怎么想....

将整个数组值分配给字符串而不在 PHP 中循环

循环不是一个糟糕的解决方案..您不妨试一试...示例:

$l = "";
$c = count($array);
for($i = 0; $i < $c; ++ $i) {
    $l .= $array[$i];
}
echo $l;
于 2012-12-05T21:38:30.317 回答
1

最简单的解决方案是使用implode.

echo implode($array);

如果您确实关心速度...好吧...

我希望我不会得到这样的回应:

-1 用于“基准测试”这个

编辑:我做到了。


通过我的“综合测试”,str_replace是最快的方法。

但是没有人可以证明这一点,它可以破坏结果。

str_replace(array(']', '[', '"', ','), '', json_encode($array));

演示


因此,为简单起见,请坚持使用implode.


旧的、无效的测试结果: 但无论如何,这是我的测试(我使用了@Baba 脚本中的一些函数进行比较):codepad.org/BwBLpmgp

结果:

array_pop 时间:0.0014219284057617 array_shift 时间:0.00010895729064941 循环时间:0.0004279613494873 vsprintf 时间:0.00033998489379883 内爆时间:0.00016212463208902 str_replace 时间:0.00016212463208906 str_replace 时间:0.0004279613494873

array_shift是禁食法。

用法:

while($shift = array_shift($array)) { $result .= $shift; }
于 2012-12-05T22:47:30.270 回答