回答編集履歴

2

マニュアルへのリンク追加

2020/07/14 20:14

投稿

hina
hina

スコア132

test CHANGED
@@ -112,7 +112,7 @@
112
112
 
113
113
 
114
114
 
115
- PHPでは未定義の変数にアクセスすると(E_NOTICEは返したりしますが)`NULL`になります。これを`(int)`で整数にキャストしてるわけですから`(int)NULL`となり、0にキャストされます。
115
+ PHPでは未定義の変数にアクセスすると(E_NOTICEは返したりしますが)`NULL`になります。これを`(int)`で整数にキャストしてるわけですから`(int)NULL`となり、[0にキャスト](https://www.php.net/manual/ja/language.types.integer.php#language.types.integer.casting:~:text=NULL%20%E3%81%8B%E3%82%89)されます。
116
116
 
117
117
 
118
118
 

1

追記

2020/07/14 20:14

投稿

hina
hina

スコア132

test CHANGED
@@ -79,3 +79,41 @@
79
79
 
80
80
 
81
81
  まあ、あまりこのようなコードを書く機会はないことを願いたいまでですが……
82
+
83
+
84
+
85
+ -----
86
+
87
+
88
+
89
+ > ```
90
+
91
+ > $stock_{$i} = (int)explode(" ", fgets(STDIN));
92
+
93
+ > ```
94
+
95
+ > としても何も変わりませんでした。
96
+
97
+
98
+
99
+ 上に示したとおりです。
100
+
101
+
102
+
103
+ > 一方で、
104
+
105
+ > ```
106
+
107
+ > echo (int)$stock_1[0];
108
+
109
+ > ```
110
+
111
+ > とすると、0だけ出力されました。これもなぜかわからず、混乱しております。
112
+
113
+
114
+
115
+ PHPでは未定義の変数にアクセスすると(E_NOTICEは返したりしますが)`NULL`になります。これを`(int)`で整数にキャストしてるわけですから`(int)NULL`となり、0にキャストされます。
116
+
117
+
118
+
119
+ ※ [8.0でWarnにかわりそうです](https://qiita.com/rana_kualu/items/4815d52f9885917af1a8)