回答編集履歴
1
仕様をもっとわかりやすく修正
answer
CHANGED
@@ -1,12 +1,18 @@
|
|
1
|
-
|
1
|
+
文字列から数値のキャストは1文字目から順に数字を探していき、
|
2
|
-
|
2
|
+
先頭文字がスペース等の空白文字だった場合は探索を継続しますが、数字以外が出た時点で探索打ち切り。
|
3
|
-
1文字も数値
|
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マニュアルに載ってます。
|