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

时间:2012-12-05 21:37:17

标签: php arrays

我有一个大约1000个值的数组,我只是使用shuffle()对它们进行了混乱。现在我想回应洗牌后的结果。但是这里有捕获,可以在不循环遍历数组或显示数组'语法'的情况下完成吗?

即:

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

2 个答案:

答案 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));

Demo


因此,为简单起见,请坚持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; }