我有一个大约1000个值的数组,我只是使用shuffle()对它们进行了混乱。现在我想回应洗牌后的结果。但是这里有捕获,可以在不循环遍历数组或显示数组'语法'的情况下完成吗?
即:
<?php
$myarray = array('a','b','c','d');
shuffle($myarray);
echo array_echo_vals_only($myarray);
/*
should echo: dbca
*/
?>
答案 0 :(得分: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;
答案 1 :(得分: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 for循环 时间:0.0004279613494873 vsprintf中 时间:0.00033998489379883 爆 时间:0.00016212463378906 str_replace函数 时间:0.0012540817260742 德尔> array_shift
是禁食方法。
<德尔>用法:德尔>
<德尔> while($ shift = array_shift($ array)){ $ result。= $ shift; } 德尔>