teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

仕様をもっとわかりやすく修正

2017/11/16 09:50

投稿

miyabi-sun
miyabi-sun

スコア21459

answer CHANGED
@@ -1,12 +1,18 @@
1
- 単純に数値文字比較た結果
1
+ 文字列から数値のキャストは1文字目から順に数字ていき
2
- `"10hours"`という文字`10`という数値に変換されます。
2
+ 先頭文字がスペース等の空白文字だった場合探索を継続しますが、数字以外が出た時点で探索打ち切り
3
- 1文字も数値がなければ`0`として取り扱われます。
3
+ 1文字目がそそも数値以外の文字だった場合は0として取り扱う仕様です。
4
4
 
5
5
  私はPHPの作者じゃないので意図を説明しろと言われてもわかりませんが、
6
6
  多分こう言いたいのだと思います。
7
-
8
7
  PHP作者「だって`"10h"`を`10`って評価したいじゃん!ルール決めしたらこうなった!」
9
8
 
9
+ `"10hours"`という文字列は`10`という数値に変換されます。
10
+ 1文字も数値がなければ`0`になります。(おかしいだろ1個目)
11
+ `"number_of_7"`を数値にキャストすると`0`になります。(おかしいだろ2個目)
12
+
13
+ この辺の型変換周りの動作は言語毎に実装揺れがありますし、
14
+ PHP以外のあんな言語やこんな言語も想定外の糞挙動は結構あります。
15
+
10
16
  ---
11
17
 
12
18
  この辺の仕様はPHPマニュアルに載ってます。