特定の文字または文字列に基づいて配列を配列に分割する必要がある場合、explode() 関数は非常に便利ですが、explode() がどのように機能するかご存知ですか?文字列のインターセプトの問題により、Explode が再割り当てスペースを消費することは避けられません。
リーリー別の段落を見てみましょう:
リーリー以下は、explode の 3 番目のパラメーター制限に基づく呼び出しの分析です。条件は、explode の最後の 3 行に対応しますが、制限条件は異なります。注: 制限がデフォルトに設定されている (渡されていない) 場合、そのデフォルト値は LONG_MAX であり、これはブランチ 1 の場合です。
php_explode メソッドを呼び出します。このメソッドは ext/standard/string.c にもあり、explode 実装のすぐ上に表示されます (そのため、この関数でこのファイルからメソッドを見つけるのは非常に便利です。列はほとんどありません。例外はすべて関数のすぐ上にあります ^_^)。
リーリーphp_explode_negative_limit メソッドを呼び出します:
リーリー最初と 2 番目の条件がすべて満たされていない場合は、このブランチに入ります。このブランチは、ソース文字列を出力配列、explode('|', 'avc|sd', 1) またはexplode('|') に入れるだけです。 , 'avc|sd', 0) は array(0 => 'avc|sd');
を返します リーリー見てわかるように (割り当てられたスペースは含まれません)、limit>1 の場合、効率は O(N) [N は限界値]、limit