-2

私はいくつかの検索を行いましたが、ほとんどの投稿はphp explode関数を使用して文字列を区切り、その値を配列に格納しています。

変換する効率的な方法が必要です:

$string = "45,34,65,57,45,23,26,72,73,56";

配列に対して、を使用して単一の値にアクセスできるようにします$array[3]

爆発するよりも良い方法はありますか?

4

6 に答える 6

2

Explodeは、区切り文字を検索する単純な文字列リーダーであるため、文字列を配列に分割する最速の方法です。split / preg_split / eregなどのように、これに関連する正規表現エンジンのオーバーヘッドはありません。パフォーマンスを向上させる唯一の方法は、マウスの背中の毛を分割することです。これは、文字列配列を一重引用して解析されないようにすることです。変数の場合。

ただし、サンプル配列のサイズを考えると、配列内の各数値の値に相当する小数点以下の桁数まで円周率を計算できますが、それでもパフォーマンスの問題の表面を傷つけることはありません。

于 2011-05-27T08:00:52.290 に答える
2
$desiredPart = 3;

$num = strtok($string, ',');
$part = 1;

while ($part < $desiredPart && $num !== false) {
    $num = strtok(',');
    $part++;
}

echo $num;

これは、非常に長い文字列を処理する必要がある場合におそらく最も効率的です。つまり、非常に長い文字列を意味します。例として投稿したサイズの場合は、を使用しますexplode


パーツがすべて同じ長さの場合は、次のようにします。

$desiredPart = 3;
$partLength = 2;
$num = substr($string, ($partLength + 1) * ($desiredPart - 1), $partLength);
于 2011-05-27T08:01:26.820 に答える
1

正規表現を使用することもできますが、それはより遅くなりますexplode()

于 2011-05-27T07:57:23.123 に答える
1

パーツの長さが一定の場合は、str_splitメソッドのパフォーマンスを確認できます。

http://www.php.net/manual/en/function.str-split.php

于 2011-05-27T07:59:15.260 に答える
0

このexplode()方法が最も速いです。

preg_split()より柔軟な代替手段ですが、はるかに低速です。

于 2011-05-27T07:57:20.833 に答える
-1

爆発の何が問題になっていますか?

regex / substringを使用することもできますが、開発と実行の両方で時間がかかります。
何よりも、爆発はあなたのために行われます。

于 2011-05-27T07:59:48.097 に答える