- ベストアンサー
split関数とexplode関数の違いと、define関数について
初歩的な質問なのですが二点質問させてください。 1・ split関数とexplode関数の明確な違い、使い分けがわかりません。 どちらも指定した区切り文字で分解できるのは分かるのですが、それぞれどういったケースで使い分けるのでしょうッか。 2・ define関数は定数名を決めて、その定数に内容として数値やストリングを格納できるようですが、 そもそも、変数にストリングや文字を入れればいいだけで、わざわざ「定数」というものを利用する意味、メリットというのは何があるのでしょうか。 よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
1. splitは、区切り文字に正規表現が使える。その分遅い。 explodeは、区切り文字に正規表現が使えない。その分速い。 まぁ、速い遅いといっても、大量のデータを処理するのでなければ、 ほとんど変わらないと思いますが。 2. 定数と変数の使い分けは、 名が表すとおり、定数は定まった値です。 コード中で、値を変更することはできません。 例えば、消費税の税率等、変更される可能性はあるが プログラム中では変更しない値とかで使うとか。 define("ZEI",0.05); print 100 * (1 + ZEI); あとは何度も使う、長ったらしいパス名とかを PATH とかの定数にすると、コードの視認性が 高くなるので、後のメンテナンスに役立ったりします。 もちろん変数で、同じことはできます。 ただ定数は設定しているところは1ヶ所で、 変更はできないので、修正するときは1ヶ所を 直すだけですみます。 変数を使うと、こちらの意図していないところで、 値が変更されてしまう可能性がありますから。
その他の回答 (1)
- the845t
- ベストアンサー率33% (246/743)
1. 正規表現を必要としない場合は、explode()の方が高速です。 split()は正規表現を使う、explode()は単に文字列で・・・ の違いかと。 2. 一度定義すると不変のものなので、そういうところが利点でしょう。 実際に使ったことないので良く分かりませんが・・・・。
お礼
正規表現の際にsplitは必要だということですね。 わかりました。 またdefine関数は使われている人も意外に少ないのかなと思いました。 ありがとうございました。
お礼
ありがとうございます。 非常によく分かりました! splitとexplodeで、explodeのほうがより高速であるということは知りませんでしたし、また正規表現にはsplitということも知れて本当に勉強になりました。 定数もなるほどと納得しました。 ご丁寧にありがとうございました。