ます’s Blog - どうでもいい記事100選

どうでもいい記事100選

foreach


注意: foreachは、'@' によりエラーメッセージ出力を抑制する機能をサポートしていません。

個人的には、この仕様が気に入りません。であれば、せめてE_NOTICEにして欲しい。
という訳でダメ駄目パッチを作ってみた。よい子のみんな、決して真似しないでね。

--- php-4.4.0,orig/Zend/zend_execute.c	2005-07-12 14:28:43.000000000 +0900
+++ php-4.4.0/Zend/zend_execute.c	2005-07-12 14:28:43.000000000 +0900
@@ -2393,7 +2393,7 @@
 						/* probably redundant */
 						zend_hash_internal_pointer_reset(fe_ht);
 					} else {
-						zend_error(E_WARNING, "Invalid argument supplied for foreach()");
+						zend_error(E_NOTICE, "Invalid argument supplied for foreach()");
 						/* JMP to the end of foreach */
 						EX(opline) = op_array->opcodes+EX(opline)[1].op2.u.opline_num;
 						continue;
@@ -2415,7 +2415,7 @@
 					fe_ht = HASH_OF(array);
 
 					if (!fe_ht) {
-						zend_error(E_WARNING, "Invalid argument supplied for foreach()");
+						zend_error(E_NOTICE, "Invalid argument supplied for foreach()");
 						EX(opline) = op_array->opcodes+EX(opline)->op2.u.opline_num;
 						continue;
 					} else if (zend_hash_get_current_data(fe_ht, (void **) &value)==FAILURE) {

そもそも、foreachに配列以外の情報を突っ込んでいる時点でダメ駄目なのだが。