0

約 1000 個の値の配列があり、shuffle() を使用してそれらをシャッフルしました。ここで、シャッフルされた結果をエコーし​​たいと思います。しかし、これがキャッチです。配列をループしたり、配列の「構文」を表示したりせずに実行できますか?

すなわち:

<?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 for loop 時間: 0.0004279613494873 vsprintf 時間: 0.00033998489379883 implode 時間: 0.00016212463378906 str_replace: 25

array_shift断食法です。

使用法:

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