に等しくない間、私は1.00
、2.000
又は0.000
ような値を持つ文字列$number
を有し、$number
が0.000
に等しくないがコードを実行しなければなりません。PHP正規表現
私のようなPerlの構文を持っています
while(! ($number=~ /^0.00(.*)/)){
どのように私はPHPでこれを達成していますか?
に等しくない間、私は1.00
、2.000
又は0.000
ような値を持つ文字列$number
を有し、$number
が0.000
に等しくないがコードを実行しなければなりません。PHP正規表現
私のようなPerlの構文を持っています
while(! ($number=~ /^0.00(.*)/)){
どのように私はPHPでこれを達成していますか?
使用preg_match
:
while (ceil($number)) {
// Do stuff
}
は、最寄りのint型に切り上げとブール必要がありますので、同じジョブとして評価し、また、かなりのようになります。と間違って何かが
while (! preg_match('/^0\.00(.*)/', $number)) {
ありますすべての反復のためにRegexエンジンを起動するよりも効率的です...
これはregexを使うより効率的だと私は同意しますが、あなたの条件は '0.001'のような数字に対しては間違っています。正確な値が何であり、許されていないか、彼が持っていた値と持っていない値が何であるかについての疑問が少しはっきりしています。少なくとも、彼はPHP正規表現の使い方を学ぶ機会を得ました。 –
@tandu:それは仕事のために全く間違ったツールであるときにツールを使う方法を無意識に学ぶことです。 OPが正規表現を使用して数値比較を続けている場合、そのコードベースはメンテナンスの悪夢となります(ほとんどの場合、http://thedailywtf.com/で終了します)。 – Johnsyweb
これは正規表現の仕事ではありません!
(float)$ number == 0)を比較してみませんか?実際には、$ number == 0や$!だけでも動作します。 –
正規表現では、0.00999がループ終了記号として扱われます。しかし、-0.00555はそうではありません。これは意図的ですか? – Johnsyweb