私はいくつかの検索を行いましたが、ほとんどの投稿はphp explode関数を使用して文字列を区切り、その値を配列に格納しています。
変換する効率的な方法が必要です:
$string = "45,34,65,57,45,23,26,72,73,56";
配列に対して、を使用して単一の値にアクセスできるようにします$array[3]
。
爆発するよりも良い方法はありますか?
私はいくつかの検索を行いましたが、ほとんどの投稿はphp explode関数を使用して文字列を区切り、その値を配列に格納しています。
変換する効率的な方法が必要です:
$string = "45,34,65,57,45,23,26,72,73,56";
配列に対して、を使用して単一の値にアクセスできるようにします$array[3]
。
爆発するよりも良い方法はありますか?
Explodeは、区切り文字を検索する単純な文字列リーダーであるため、文字列を配列に分割する最速の方法です。split / preg_split / eregなどのように、これに関連する正規表現エンジンのオーバーヘッドはありません。パフォーマンスを向上させる唯一の方法は、マウスの背中の毛を分割することです。これは、文字列配列を一重引用して解析されないようにすることです。変数の場合。
ただし、サンプル配列のサイズを考えると、配列内の各数値の値に相当する小数点以下の桁数まで円周率を計算できますが、それでもパフォーマンスの問題の表面を傷つけることはありません。
$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);
正規表現を使用することもできますが、それはより遅くなりますexplode()
パーツの長さが一定の場合は、str_splitメソッドのパフォーマンスを確認できます。
このexplode()
方法が最も速いです。
preg_split()
より柔軟な代替手段ですが、はるかに低速です。
爆発の何が問題になっていますか?
regex / substringを使用することもできますが、開発と実行の両方で時間がかかります。
何よりも、爆発はあなたのために行われます。