diff --git a/Zend/tests/generators/errors/count_error.phpt b/Zend/tests/generators/errors/count_error.phpt index 97e03e7d712d2..e102ea5b06bef 100644 --- a/Zend/tests/generators/errors/count_error.phpt +++ b/Zend/tests/generators/errors/count_error.phpt @@ -11,8 +11,10 @@ try { count($gen); } catch (Exception $e) { echo $e; -} +} catch (\TypeError $e) { + echo $e->getMessage() . "\n"; + } ?> ---EXPECTF-- -Warning: count(): Parameter must be an array or an object that implements Countable in %s on line %d +--EXPECT-- +Parameter must be an array or an object that implements Countable diff --git a/Zend/zend_vm_def.h b/Zend/zend_vm_def.h index 6a4719b3dd28f..041744beb1218 100644 --- a/Zend/zend_vm_def.h +++ b/Zend/zend_vm_def.h @@ -8442,53 +8442,41 @@ ZEND_VM_COLD_CONST_HANDLER(190, ZEND_COUNT, CONST|TMPVAR|CV, UNUSED) { USE_OPLINE zval *op1; - zend_long count; + zend_long count = 1; SAVE_OPLINE(); op1 = GET_OP1_ZVAL_PTR_UNDEF(BP_VAR_R); - while (1) { - if (Z_TYPE_P(op1) == IS_ARRAY) { - count = zend_array_count(Z_ARRVAL_P(op1)); - break; - } else if (Z_TYPE_P(op1) == IS_OBJECT) { - zend_object *zobj = Z_OBJ_P(op1); - - /* first, we check if the handler is defined */ - if (zobj->handlers->count_elements) { - if (SUCCESS == zobj->handlers->count_elements(zobj, &count)) { - break; - } - if (UNEXPECTED(EG(exception))) { - count = 0; - break; - } - } - /* if not and the object implements Countable we call its count() method */ - if (zend_class_implements_interface(zobj->ce, zend_ce_countable)) { - zval retval; - - zend_call_method_with_0_params(zobj, NULL, NULL, "count", &retval); - count = zval_get_long(&retval); - zval_ptr_dtor(&retval); - break; - } + if ((OP1_TYPE & (IS_VAR|IS_CV)) != 0 && Z_TYPE_P(op1) == IS_REFERENCE) { + op1 = Z_REFVAL_P(op1); + } - /* If There's no handler and it doesn't implement Countable then add a warning */ - count = 1; - } else if ((OP1_TYPE & (IS_VAR|IS_CV)) != 0 && Z_TYPE_P(op1) == IS_REFERENCE) { - op1 = Z_REFVAL_P(op1); - continue; - } else if (Z_TYPE_P(op1) <= IS_NULL) { - if (OP1_TYPE == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) { - ZVAL_UNDEFINED_OP1(); - } - count = 0; + if (Z_TYPE_P(op1) <= IS_NULL) { + /* Intentionally not converted to an exception */ + zend_error(E_DEPRECATED, "%s(): Passing null is deprecated", opline->extended_value ? "sizeof" : "count"); + if (OP1_TYPE == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) { + ZVAL_UNDEFINED_OP1(); + } + count = 0; + } else if (Z_TYPE_P(op1) == IS_ARRAY) { + count = zend_array_count(Z_ARRVAL_P(op1)); + } else if (Z_TYPE_P(op1) == IS_OBJECT) { + zend_object *zobj = Z_OBJ_P(op1); + /* First, check if the handler is defined as it is faster */ + if (zobj->handlers->count_elements) { + zobj->handlers->count_elements(zobj, &count); + /* Otherwise check if the object implements Countable and call its count() method */ + } else if (zend_class_implements_interface(zobj->ce, zend_ce_countable)) { + zval retval; + + zend_call_method_with_0_params(zobj, NULL, NULL, "count", &retval); + count = zval_get_long(&retval); + zval_ptr_dtor(&retval); } else { - count = 1; + zend_type_error("Parameter must be an array or an object that implements Countable"); } - zend_error(E_WARNING, "%s(): Parameter must be an array or an object that implements Countable", opline->extended_value ? "sizeof" : "count"); - break; + } else { + zend_type_error("Parameter must be an array or an object that implements Countable"); } ZVAL_LONG(EX_VAR(opline->result.var), count); diff --git a/Zend/zend_vm_execute.h b/Zend/zend_vm_execute.h index 346dbec656f9a..8e6e0ac323b9c 100644 --- a/Zend/zend_vm_execute.h +++ b/Zend/zend_vm_execute.h @@ -9259,53 +9259,41 @@ static ZEND_VM_COLD ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_COUNT_SPEC_CONST_ { USE_OPLINE zval *op1; - zend_long count; + zend_long count = 1; SAVE_OPLINE(); op1 = RT_CONSTANT(opline, opline->op1); - while (1) { - if (Z_TYPE_P(op1) == IS_ARRAY) { - count = zend_array_count(Z_ARRVAL_P(op1)); - break; - } else if (Z_TYPE_P(op1) == IS_OBJECT) { - zend_object *zobj = Z_OBJ_P(op1); - - /* first, we check if the handler is defined */ - if (zobj->handlers->count_elements) { - if (SUCCESS == zobj->handlers->count_elements(zobj, &count)) { - break; - } - if (UNEXPECTED(EG(exception))) { - count = 0; - break; - } - } - /* if not and the object implements Countable we call its count() method */ - if (zend_class_implements_interface(zobj->ce, zend_ce_countable)) { - zval retval; + if ((IS_CONST & (IS_VAR|IS_CV)) != 0 && Z_TYPE_P(op1) == IS_REFERENCE) { + op1 = Z_REFVAL_P(op1); + } - zend_call_method_with_0_params(zobj, NULL, NULL, "count", &retval); - count = zval_get_long(&retval); - zval_ptr_dtor(&retval); - break; - } + if (Z_TYPE_P(op1) <= IS_NULL) { + /* Intentionally not converted to an exception */ + zend_error(E_DEPRECATED, "%s(): Passing null is deprecated", opline->extended_value ? "sizeof" : "count"); + if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) { + ZVAL_UNDEFINED_OP1(); + } + count = 0; + } else if (Z_TYPE_P(op1) == IS_ARRAY) { + count = zend_array_count(Z_ARRVAL_P(op1)); + } else if (Z_TYPE_P(op1) == IS_OBJECT) { + zend_object *zobj = Z_OBJ_P(op1); + /* First, check if the handler is defined as it is faster */ + if (zobj->handlers->count_elements) { + zobj->handlers->count_elements(zobj, &count); + /* Otherwise check if the object implements Countable and call its count() method */ + } else if (zend_class_implements_interface(zobj->ce, zend_ce_countable)) { + zval retval; - /* If There's no handler and it doesn't implement Countable then add a warning */ - count = 1; - } else if ((IS_CONST & (IS_VAR|IS_CV)) != 0 && Z_TYPE_P(op1) == IS_REFERENCE) { - op1 = Z_REFVAL_P(op1); - continue; - } else if (Z_TYPE_P(op1) <= IS_NULL) { - if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) { - ZVAL_UNDEFINED_OP1(); - } - count = 0; + zend_call_method_with_0_params(zobj, NULL, NULL, "count", &retval); + count = zval_get_long(&retval); + zval_ptr_dtor(&retval); } else { - count = 1; + zend_type_error("Parameter must be an array or an object that implements Countable"); } - zend_error(E_WARNING, "%s(): Parameter must be an array or an object that implements Countable", opline->extended_value ? "sizeof" : "count"); - break; + } else { + zend_type_error("Parameter must be an array or an object that implements Countable"); } ZVAL_LONG(EX_VAR(opline->result.var), count); @@ -16338,53 +16326,41 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_COUNT_SPEC_TMPVAR_UNUSED_HANDL { USE_OPLINE zval *op1; - zend_long count; + zend_long count = 1; SAVE_OPLINE(); op1 = _get_zval_ptr_var(opline->op1.var EXECUTE_DATA_CC); - while (1) { - if (Z_TYPE_P(op1) == IS_ARRAY) { - count = zend_array_count(Z_ARRVAL_P(op1)); - break; - } else if (Z_TYPE_P(op1) == IS_OBJECT) { - zend_object *zobj = Z_OBJ_P(op1); - /* first, we check if the handler is defined */ - if (zobj->handlers->count_elements) { - if (SUCCESS == zobj->handlers->count_elements(zobj, &count)) { - break; - } - if (UNEXPECTED(EG(exception))) { - count = 0; - break; - } - } - - /* if not and the object implements Countable we call its count() method */ - if (zend_class_implements_interface(zobj->ce, zend_ce_countable)) { - zval retval; + if (((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_CV)) != 0 && Z_TYPE_P(op1) == IS_REFERENCE) { + op1 = Z_REFVAL_P(op1); + } - zend_call_method_with_0_params(zobj, NULL, NULL, "count", &retval); - count = zval_get_long(&retval); - zval_ptr_dtor(&retval); - break; - } + if (Z_TYPE_P(op1) <= IS_NULL) { + /* Intentionally not converted to an exception */ + zend_error(E_DEPRECATED, "%s(): Passing null is deprecated", opline->extended_value ? "sizeof" : "count"); + if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) { + ZVAL_UNDEFINED_OP1(); + } + count = 0; + } else if (Z_TYPE_P(op1) == IS_ARRAY) { + count = zend_array_count(Z_ARRVAL_P(op1)); + } else if (Z_TYPE_P(op1) == IS_OBJECT) { + zend_object *zobj = Z_OBJ_P(op1); + /* First, check if the handler is defined as it is faster */ + if (zobj->handlers->count_elements) { + zobj->handlers->count_elements(zobj, &count); + /* Otherwise check if the object implements Countable and call its count() method */ + } else if (zend_class_implements_interface(zobj->ce, zend_ce_countable)) { + zval retval; - /* If There's no handler and it doesn't implement Countable then add a warning */ - count = 1; - } else if (((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_CV)) != 0 && Z_TYPE_P(op1) == IS_REFERENCE) { - op1 = Z_REFVAL_P(op1); - continue; - } else if (Z_TYPE_P(op1) <= IS_NULL) { - if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) { - ZVAL_UNDEFINED_OP1(); - } - count = 0; + zend_call_method_with_0_params(zobj, NULL, NULL, "count", &retval); + count = zval_get_long(&retval); + zval_ptr_dtor(&retval); } else { - count = 1; + zend_type_error("Parameter must be an array or an object that implements Countable"); } - zend_error(E_WARNING, "%s(): Parameter must be an array or an object that implements Countable", opline->extended_value ? "sizeof" : "count"); - break; + } else { + zend_type_error("Parameter must be an array or an object that implements Countable"); } ZVAL_LONG(EX_VAR(opline->result.var), count); @@ -45185,53 +45161,41 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_COUNT_SPEC_CV_UNUSED_HANDLER(Z { USE_OPLINE zval *op1; - zend_long count; + zend_long count = 1; SAVE_OPLINE(); op1 = EX_VAR(opline->op1.var); - while (1) { - if (Z_TYPE_P(op1) == IS_ARRAY) { - count = zend_array_count(Z_ARRVAL_P(op1)); - break; - } else if (Z_TYPE_P(op1) == IS_OBJECT) { - zend_object *zobj = Z_OBJ_P(op1); - /* first, we check if the handler is defined */ - if (zobj->handlers->count_elements) { - if (SUCCESS == zobj->handlers->count_elements(zobj, &count)) { - break; - } - if (UNEXPECTED(EG(exception))) { - count = 0; - break; - } - } - - /* if not and the object implements Countable we call its count() method */ - if (zend_class_implements_interface(zobj->ce, zend_ce_countable)) { - zval retval; + if ((IS_CV & (IS_VAR|IS_CV)) != 0 && Z_TYPE_P(op1) == IS_REFERENCE) { + op1 = Z_REFVAL_P(op1); + } - zend_call_method_with_0_params(zobj, NULL, NULL, "count", &retval); - count = zval_get_long(&retval); - zval_ptr_dtor(&retval); - break; - } + if (Z_TYPE_P(op1) <= IS_NULL) { + /* Intentionally not converted to an exception */ + zend_error(E_DEPRECATED, "%s(): Passing null is deprecated", opline->extended_value ? "sizeof" : "count"); + if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) { + ZVAL_UNDEFINED_OP1(); + } + count = 0; + } else if (Z_TYPE_P(op1) == IS_ARRAY) { + count = zend_array_count(Z_ARRVAL_P(op1)); + } else if (Z_TYPE_P(op1) == IS_OBJECT) { + zend_object *zobj = Z_OBJ_P(op1); + /* First, check if the handler is defined as it is faster */ + if (zobj->handlers->count_elements) { + zobj->handlers->count_elements(zobj, &count); + /* Otherwise check if the object implements Countable and call its count() method */ + } else if (zend_class_implements_interface(zobj->ce, zend_ce_countable)) { + zval retval; - /* If There's no handler and it doesn't implement Countable then add a warning */ - count = 1; - } else if ((IS_CV & (IS_VAR|IS_CV)) != 0 && Z_TYPE_P(op1) == IS_REFERENCE) { - op1 = Z_REFVAL_P(op1); - continue; - } else if (Z_TYPE_P(op1) <= IS_NULL) { - if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) { - ZVAL_UNDEFINED_OP1(); - } - count = 0; + zend_call_method_with_0_params(zobj, NULL, NULL, "count", &retval); + count = zval_get_long(&retval); + zval_ptr_dtor(&retval); } else { - count = 1; + zend_type_error("Parameter must be an array or an object that implements Countable"); } - zend_error(E_WARNING, "%s(): Parameter must be an array or an object that implements Countable", opline->extended_value ? "sizeof" : "count"); - break; + } else { + zend_type_error("Parameter must be an array or an object that implements Countable"); } ZVAL_LONG(EX_VAR(opline->result.var), count); diff --git a/ext/standard/array.c b/ext/standard/array.c index d86177b5f9068..5e5f41e68029b 100644 --- a/ext/standard/array.c +++ b/ext/standard/array.c @@ -693,69 +693,68 @@ PHPAPI zend_long php_count_recursive(HashTable *ht) /* {{{ */ Count the number of elements in a variable (usually an array) */ PHP_FUNCTION(count) { - zval *array; + HashTable *array = NULL; zend_long mode = COUNT_NORMAL; - zend_long cnt; + zval *countable; - ZEND_PARSE_PARAMETERS_START(1, 2) - Z_PARAM_ZVAL(array) - Z_PARAM_OPTIONAL - Z_PARAM_LONG(mode) - ZEND_PARSE_PARAMETERS_END(); + if (zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS(), "h!|l", &array, &mode) == SUCCESS) { + if (array == NULL) { + /* Intentionally not converted to an exception */ + php_error_docref(NULL, E_DEPRECATED, "Passing null is deprecated"); + RETURN_LONG(0); + } if (mode != COUNT_NORMAL && mode != COUNT_RECURSIVE) { zend_argument_value_error(2, "must be either COUNT_NORMAL or COUNT_RECURSIVE"); RETURN_THROWS(); + + zend_long count; + + if (mode == COUNT_NORMAL) { + count = zend_array_count(array); + } else if (mode == COUNT_RECURSIVE) { + count = php_count_recursive(array); + } else { + zend_value_error("Mode value is invalid"); + RETURN_THROWS(); + } + RETURN_LONG(count); +>>>>>>> d05a057cb3... Improve count() in regards to argument checks } - switch (Z_TYPE_P(array)) { - case IS_NULL: - /* Intentionally not converted to an exception */ - php_error_docref(NULL, E_WARNING, "Parameter must be an array or an object that implements Countable"); - RETURN_LONG(0); - break; - case IS_ARRAY: - if (mode != COUNT_RECURSIVE) { - cnt = zend_array_count(Z_ARRVAL_P(array)); - } else { - cnt = php_count_recursive(Z_ARRVAL_P(array)); - } - RETURN_LONG(cnt); - break; - case IS_OBJECT: { - zval retval; - /* first, we check if the handler is defined */ - if (Z_OBJ_HT_P(array)->count_elements) { - RETVAL_LONG(1); - if (SUCCESS == Z_OBJ_HT(*array)->count_elements(Z_OBJ_P(array), &Z_LVAL_P(return_value))) { - return; - } - if (EG(exception)) { - RETURN_THROWS(); - } + /* Remove possibility to specify $mode when passing object? */ + if (zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS(), "o|l", + &countable, &mode) == SUCCESS) { + + if (mode != COUNT_NORMAL && mode != COUNT_RECURSIVE) { + zend_value_error("Mode value is invalid"); + RETURN_THROWS(); + } + + /* First, check if the handler is defined as it is faster */ + if (Z_OBJ_HT_P(countable)->count_elements) { + RETVAL_LONG(1); + if (SUCCESS == Z_OBJ_HT(*countable)->count_elements(Z_OBJ_P(countable), &Z_LVAL_P(return_value))) { + return; } - /* if not and the object implements Countable we call its count() method */ - if (instanceof_function(Z_OBJCE_P(array), zend_ce_countable)) { - zend_call_method_with_0_params(Z_OBJ_P(array), NULL, NULL, "count", &retval); - if (Z_TYPE(retval) != IS_UNDEF) { - RETVAL_LONG(zval_get_long(&retval)); - zval_ptr_dtor(&retval); - } + if (EG(exception)) { return; } + } - /* If There's no handler and it doesn't implement Countable then add a warning */ - /* Intentionally not converted to an exception */ - php_error_docref(NULL, E_WARNING, "Parameter must be an array or an object that implements Countable"); - RETURN_LONG(1); - break; + zval retval; + /* Otherwise check if the object implements Countable and call its count() method */ + if (instanceof_function(Z_OBJCE_P(countable), zend_ce_countable)) { + zend_call_method_with_0_params(Z_OBJ_P(countable), NULL, NULL, "count", &retval); + if (Z_TYPE(retval) != IS_UNDEF) { + RETVAL_LONG(zval_get_long(&retval)); + zval_ptr_dtor(&retval); + } + return; } - default: - /* Intentionally not converted to an exception */ - php_error_docref(NULL, E_WARNING, "Parameter must be an array or an object that implements Countable"); - RETURN_LONG(1); - break; } + zend_type_error("Parameter must be an array or an object that implements Countable"); + return; } /* }}} */ diff --git a/ext/standard/tests/array/count_basic.phpt b/ext/standard/tests/array/count_basic.phpt index 3b22c582db751..4a0459c86d9f2 100644 --- a/ext/standard/tests/array/count_basic.phpt +++ b/ext/standard/tests/array/count_basic.phpt @@ -2,7 +2,8 @@ Test count() function : basic functionality --FILE-- --EXPECT-- *** Testing count() : basic functionality *** @@ -42,4 +42,3 @@ $mode = COUNT_NORMAL: int(3) $mode = 0: int(3) $mode = COUNT_RECURSIVE: int(6) $mode = 1: int(6) -Done diff --git a/ext/standard/tests/array/count_countable_object.phpt b/ext/standard/tests/array/count_countable_object.phpt new file mode 100644 index 0000000000000..a47ea4ae67b75 --- /dev/null +++ b/ext/standard/tests/array/count_countable_object.phpt @@ -0,0 +1,31 @@ +--TEST-- +Test count() function : countable object with and without modes +--FILE-- + +--EXPECT-- +-- Testing count() in default mode -- +int(5) +-- Testing count() in COUNT_NORMAL mode -- +int(5) +-- Testing count() in COUNT_RECURSIVE mode -- +int(5) diff --git a/ext/standard/tests/array/count_invalid.phpt b/ext/standard/tests/array/count_invalid.phpt deleted file mode 100644 index 95da00dac5100..0000000000000 --- a/ext/standard/tests/array/count_invalid.phpt +++ /dev/null @@ -1,42 +0,0 @@ ---TEST-- -Only arrays and countable objects can be counted ---FILE-- - ---EXPECTF-- -Warning: count(): Parameter must be an array or an object that implements Countable in %s on line %d -int(0) - -Warning: count(): Parameter must be an array or an object that implements Countable in %s on line %d -int(1) - -Warning: count(): Parameter must be an array or an object that implements Countable in %s on line %d -int(1) - -Warning: count(): Parameter must be an array or an object that implements Countable in %s on line %d -int(1) - -Warning: count(): Parameter must be an array or an object that implements Countable in %s on line %d -int(1) - -Warning: count(): Parameter must be an array or an object that implements Countable in %s on line %d -int(1) diff --git a/ext/standard/tests/array/count_null.phpt b/ext/standard/tests/array/count_null.phpt new file mode 100644 index 0000000000000..c3cf092cefc69 --- /dev/null +++ b/ext/standard/tests/array/count_null.phpt @@ -0,0 +1,64 @@ +--TEST-- +Test count() function : null as argument +--FILE-- + +--EXPECTF-- +Deprecated: count(): Passing null is deprecated in %s on line %d +int(0) + +Deprecated: count(): Passing null is deprecated in %s on line %d +int(0) + +Deprecated: count(): Passing null is deprecated in %s on line %d +int(0) + +Deprecated: count(): Passing null is deprecated in %s on line %d + +Warning: Undefined variable $var in %s on line %d +int(0) + +Warning: Undefined variable $var in %s on line %d + +Deprecated: count(): Passing null is deprecated in %s on line %d +int(0) + +Warning: Undefined variable $var in %s on line %d + +Deprecated: count(): Passing null is deprecated in %s on line %d +int(0) + +Notice: Undefined index: key in %s on line %d + +Deprecated: count(): Passing null is deprecated in %s on line %d +int(0) + +Notice: Undefined index: key in %s on line %d + +Deprecated: count(): Passing null is deprecated in %s on line %d +int(0) + +Notice: Undefined index: key in %s on line %d + +Deprecated: count(): Passing null is deprecated in %s on line %d +int(0) diff --git a/ext/standard/tests/array/count_recursion_warning.phpt b/ext/standard/tests/array/count_recursion_warning.phpt new file mode 100644 index 0000000000000..bd463c82ba3c6 --- /dev/null +++ b/ext/standard/tests/array/count_recursion_warning.phpt @@ -0,0 +1,34 @@ +--TEST-- +Test count() function : Infinitely recursive array warning disaply +--FILE-- + +--EXPECTF-- +-- $mode not set: -- +int(4) + +-- $mode = COUNT_RECURSIVE: -- + +Warning: count(): Recursion detected in %s on line %d +int(4) diff --git a/ext/standard/tests/array/count_recursive.phpt b/ext/standard/tests/array/count_recursive.phpt index a7d4afb53b8d3..5d7cf81a15baa 100644 --- a/ext/standard/tests/array/count_recursive.phpt +++ b/ext/standard/tests/array/count_recursive.phpt @@ -2,16 +2,13 @@ Test count() function --FILE-- 1, "b" => 2, array("c" => 3, array("d" => 5))); print "COUNT_NORMAL: should be 3, is ".count($arr, COUNT_NORMAL)."\n"; print "COUNT_RECURSIVE: should be 6, is ".count($arr, COUNT_RECURSIVE)."\n"; -print "-- Testing strings --\n"; -print "COUNT_NORMAL: should be 1, is ".count("string", COUNT_NORMAL)."\n"; -print "COUNT_RECURSIVE: should be 1, is ".count("string", COUNT_RECURSIVE)."\n"; - -print "-- Testing various types with no second argument --\n"; -print "COUNT_NORMAL: should be 1, is ".count("string")."\n"; +print "-- Testing array with no second argument --\n"; print "COUNT_NORMAL: should be 2, is ".count(array("a", array("b")))."\n"; $arr = array('a'=>array(NULL, NULL, NULL), 1=>array(NULL=>1, 1=>NULL), @@ -38,40 +30,24 @@ print "COUNT_RECURSIVE: should be 13, is ".count($arr, COUNT_RECURSIVE)."\n"; echo "\n*** Testing possible variations of count() function on arrays ***"; $count_array = array( - array(), - array( 1 => "string"), - array( "" => "string", 0 => "a", NULL => "b", -1.00 => "c", - array(array(array(NULL)))), - array( -2.44444 => 12, array(array(1, 2, array(array("0"))))), - array( "a" => 1, "b" => -2.344, "b" => "string", "c" => NULL, "d" => -2.344), - array( 4 => 1, 3 => -2.344, "3" => "string", "2" => NULL, - 1 => -2.344, array()), - array( TRUE => TRUE, FALSE => FALSE, "" => "", " " => " ", - NULL => NULL, "\x000" => "\x000", "\000" => "\000"), - array( NULL, 1.23 => "Hi", "string" => "hello", - array("" => "World", "-2.34" => "a", "0" => "b")) + array(), + array( 1 => "string"), + array( "" => "string", 0 => "a", NULL => "b", -1.00 => "c", array(array(array(NULL)))), + array( -2.44444 => 12, array(array(1, 2, array(array("0"))))), + array( "a" => 1, "b" => -2.344, "b" => "string", "c" => NULL, "d" => -2.344), + array( 4 => 1, 3 => -2.344, "3" => "string", "2" => NULL, 1 => -2.344, array()), + array( TRUE => TRUE, FALSE => FALSE, "" => "", " " => " ", NULL => NULL, "\x000" => "\x000", "\000" => "\000"), + array( NULL, 1.23 => "Hi", "string" => "hello", array("" => "World", "-2.34" => "a", "0" => "b") ) ); $i = 0; foreach ($count_array as $count_value) { - echo "\n-- Iteration $i --\n"; - print "COUNT_NORMAL is ".count($count_value, COUNT_NORMAL)."\n"; - print "COUNT_RECURSIVE is ".count($count_value, COUNT_RECURSIVE)."\n"; - $i++; + echo "\n-- Iteration $i --\n"; + print "COUNT_NORMAL is ".count($count_value, COUNT_NORMAL)."\n"; + print "COUNT_RECURSIVE is ".count($count_value, COUNT_RECURSIVE)."\n"; + $i++; } - -/* Testing count() by passing constant with no second argument */ -print "\n-- Testing count() on constants with no second argument --\n"; -print "COUNT_NORMAL: should be 1, is ".count(100)."\n"; -print "COUNT_NORMAL: should be 1, is ".count(-23.45)."\n"; - -print "\n-- Testing count() on NULL and Unset variables --\n"; -print "COUNT_NORMAL: should be 0, is ".count(NULL)."\n"; -print "COUNT_NORMAL: should be 1, is ".count("")."\n"; -print "COUNT_NORMAL: should be 0, is ".@count($a)."\n"; - - print "\n-- Testing count() on an empty sub-array --\n"; $arr = array(1, array(3, 4, array())); print "COUNT_NORMAL: should be 2, is ".count($arr, COUNT_NORMAL)."\n"; @@ -113,32 +89,15 @@ var_dump(count($arr, COUNT_RECURSIVE)); fclose( $resource1 ); closedir( $resource2 ); ?> ---EXPECTF-- +--EXPECT-- *** Testing basic functionality of count() function *** --- Testing NULL -- - -Warning: count(): Parameter must be an array or an object that implements Countable in %s on line %d -COUNT_NORMAL: should be 0, is 0 - -Warning: count(): Parameter must be an array or an object that implements Countable in %s on line %d -COUNT_RECURSIVE: should be 0, is 0 -- Testing arrays -- COUNT_NORMAL: should be 2, is 2 COUNT_RECURSIVE: should be 8, is 8 -- Testing hashes -- COUNT_NORMAL: should be 3, is 3 COUNT_RECURSIVE: should be 6, is 6 --- Testing strings -- - -Warning: count(): Parameter must be an array or an object that implements Countable in %s on line %d -COUNT_NORMAL: should be 1, is 1 - -Warning: count(): Parameter must be an array or an object that implements Countable in %s on line %d -COUNT_RECURSIVE: should be 1, is 1 --- Testing various types with no second argument -- - -Warning: count(): Parameter must be an array or an object that implements Countable in %s on line %d -COUNT_NORMAL: should be 1, is 1 +-- Testing array with no second argument -- COUNT_NORMAL: should be 2, is 2 -- Testing really cool arrays -- COUNT_NORMAL: should be 3, is 3 @@ -177,23 +136,6 @@ COUNT_RECURSIVE is 6 COUNT_NORMAL is 4 COUNT_RECURSIVE is 7 --- Testing count() on constants with no second argument -- - -Warning: count(): Parameter must be an array or an object that implements Countable in %s on line %d -COUNT_NORMAL: should be 1, is 1 - -Warning: count(): Parameter must be an array or an object that implements Countable in %s on line %d -COUNT_NORMAL: should be 1, is 1 - --- Testing count() on NULL and Unset variables -- - -Warning: count(): Parameter must be an array or an object that implements Countable in %s on line %d -COUNT_NORMAL: should be 0, is 0 - -Warning: count(): Parameter must be an array or an object that implements Countable in %s on line %d -COUNT_NORMAL: should be 1, is 1 -COUNT_NORMAL: should be 0, is 0 - -- Testing count() on an empty sub-array -- COUNT_NORMAL: should be 2, is 2 COUNT_RECURSIVE: should be 5, is 5 diff --git a/ext/standard/tests/array/count_symbol_table.phpt b/ext/standard/tests/array/count_symbol_table.phpt index b7e0a2e8b1298..dcdbdc2be238e 100644 --- a/ext/standard/tests/array/count_symbol_table.phpt +++ b/ext/standard/tests/array/count_symbol_table.phpt @@ -2,6 +2,11 @@ Test count() function : count on symbol table --FILE-- getMessage() . "\n"; + } + try { + var_dump(count($value, COUNT_NORMAL)); + } catch (\TypeError $e) { + echo $e->getMessage() . "\n"; + } + try { + var_dump(count($value, COUNT_RECURSIVE)); + } catch (\TypeError $e) { + echo $e->getMessage() . "\n"; + } +} + +--EXPECT-- +Test for: bool(true) +Parameter must be an array or an object that implements Countable +Parameter must be an array or an object that implements Countable +Parameter must be an array or an object that implements Countable +Test for: bool(false) +Parameter must be an array or an object that implements Countable +Parameter must be an array or an object that implements Countable +Parameter must be an array or an object that implements Countable +Test for: string(0) "" +Parameter must be an array or an object that implements Countable +Parameter must be an array or an object that implements Countable +Parameter must be an array or an object that implements Countable +Test for: string(6) "string" +Parameter must be an array or an object that implements Countable +Parameter must be an array or an object that implements Countable +Parameter must be an array or an object that implements Countable +Test for: string(1) "0" +Parameter must be an array or an object that implements Countable +Parameter must be an array or an object that implements Countable +Parameter must be an array or an object that implements Countable +Test for: string(3) "100" +Parameter must be an array or an object that implements Countable +Parameter must be an array or an object that implements Countable +Parameter must be an array or an object that implements Countable +Test for: string(3) "0.0" +Parameter must be an array or an object that implements Countable +Parameter must be an array or an object that implements Countable +Parameter must be an array or an object that implements Countable +Test for: string(6) "-23.45" +Parameter must be an array or an object that implements Countable +Parameter must be an array or an object that implements Countable +Parameter must be an array or an object that implements Countable +Test for: object(stdClass)#1 (0) { +} +Parameter must be an array or an object that implements Countable +Parameter must be an array or an object that implements Countable +Parameter must be an array or an object that implements Countable +Test for: object(stdClass)#2 (0) { +} +Parameter must be an array or an object that implements Countable +Parameter must be an array or an object that implements Countable +Parameter must be an array or an object that implements Countable diff --git a/ext/standard/tests/array/count_variation3.phpt b/ext/standard/tests/array/count_variation3.phpt deleted file mode 100644 index 3455585eab568..0000000000000 --- a/ext/standard/tests/array/count_variation3.phpt +++ /dev/null @@ -1,39 +0,0 @@ ---TEST-- -Test count() function : usage variations - Infinitely recursive array ---FILE-- - ---EXPECTF-- -*** Testing count() : usage variations *** - --- $mode not set: -- -int(4) - --- $mode = 1: -- - -Warning: count(): Recursion detected in %s on line %d -int(4) -Done diff --git a/ext/standard/tests/array/sizeof_basic1.phpt b/ext/standard/tests/array/sizeof_basic1.phpt index c292199cb9d19..94fc7c06ed0be 100644 --- a/ext/standard/tests/array/sizeof_basic1.phpt +++ b/ext/standard/tests/array/sizeof_basic1.phpt @@ -2,10 +2,11 @@ Test sizeof() function : basic functionality - for scalar types --FILE-- getMessage() . "\n"; +} echo "\n"; + echo "COUNT_NORMAL mode: "; -var_dump( sizeof($intval, COUNT_NORMAL) ); +try { + var_dump( sizeof($intval, COUNT_NORMAL) ); +} catch (\TypeError $e) { + echo $e->getMessage() . "\n"; +} echo "\n"; + echo "COUNT_RECURSIVE mode: "; -var_dump( sizeof($intval, COUNT_RECURSIVE) ); +try { + var_dump( sizeof($intval, COUNT_RECURSIVE) ); +} catch (\TypeError $e) { + echo $e->getMessage() . "\n"; +} echo "\n"; echo "-- Testing sizeof() for float type in default, COUNT_NORMAL and COUNT_RECURSIVE modes --\n"; + echo "default mode: "; -var_dump( sizeof($floatval) ); +try { + var_dump( sizeof($floatval) ); +} catch (\TypeError $e) { + echo $e->getMessage() . "\n"; +} echo "\n"; + echo "COUNT_NORMAL mode: "; -var_dump( sizeof($floatval, COUNT_NORMAL) ); +try { + var_dump( sizeof($floatval, COUNT_NORMAL) ); +} catch (\TypeError $e) { + echo $e->getMessage() . "\n"; +} echo "\n"; -echo "COUNT_RECURSIVE mode: "; -var_dump( sizeof($floatval, COUNT_RECURSIVE) ); -echo "Done"; +echo "COUNT_RECURSIVE mode: "; +try { + var_dump( sizeof($floatval, COUNT_RECURSIVE) ); +} catch (\TypeError $e) { + echo $e->getMessage() . "\n"; +} ?> ---EXPECTF-- + +DONE +--EXPECT-- *** Testing sizeof() : basic functionality *** -- Testing sizeof() for integer type in default, COUNT_NORMAL and COUNT_RECURSIVE modes -- -default mode: -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d -int(1) +default mode: Parameter must be an array or an object that implements Countable -COUNT_NORMAL mode: -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d -int(1) +COUNT_NORMAL mode: Parameter must be an array or an object that implements Countable -COUNT_RECURSIVE mode: -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d -int(1) +COUNT_RECURSIVE mode: Parameter must be an array or an object that implements Countable -- Testing sizeof() for float type in default, COUNT_NORMAL and COUNT_RECURSIVE modes -- -default mode: -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d -int(1) - -COUNT_NORMAL mode: -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d -int(1) - -COUNT_RECURSIVE mode: -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d -int(1) -Done +default mode: Parameter must be an array or an object that implements Countable + +COUNT_NORMAL mode: Parameter must be an array or an object that implements Countable + +COUNT_RECURSIVE mode: Parameter must be an array or an object that implements Countable + +DONE diff --git a/ext/standard/tests/array/sizeof_basic2.phpt b/ext/standard/tests/array/sizeof_basic2.phpt index a76e54d70ab65..4ef2882a2597d 100644 --- a/ext/standard/tests/array/sizeof_basic2.phpt +++ b/ext/standard/tests/array/sizeof_basic2.phpt @@ -2,10 +2,11 @@ Test sizeof() function : basic functionality - for non-scalar type(array) --FILE-- --EXPECT-- *** Testing sizeof() : object functionality *** @@ -44,4 +44,3 @@ int(3) int(3) -- Testing sizeof() in COUNT_RECURSIVE mode -- int(3) -Done diff --git a/ext/standard/tests/array/sizeof_object2.phpt b/ext/standard/tests/array/sizeof_object2.phpt index c81018f6358b5..aa95845811e63 100644 --- a/ext/standard/tests/array/sizeof_object2.phpt +++ b/ext/standard/tests/array/sizeof_object2.phpt @@ -2,10 +2,11 @@ Test sizeof() function : object functionality - objects without Countable interface --FILE-- getMessage() . "\n"; + } + echo "\n"; + + echo "COUNT_NORMAL Mode: "; + try { + var_dump( sizeof($value, COUNT_NORMAL) ); + } catch (\TypeError $e) { + echo $e->getMessage() . "\n"; + } + echo "\n"; + + echo "COUNT_RECURSIVE Mode: "; + try { + var_dump( sizeof($value, COUNT_RECURSIVE) ); + } catch (\TypeError $e) { + echo $e->getMessage() . "\n"; + } + echo "\n"; + + $counter++; } echo "Done"; ?> ---EXPECTF-- +--EXPECT-- *** Testing sizeof() : object functionality *** --- Testing sizeof() with objects which doesn't implement Countable interface --- -- Iteration 1 -- -Default Mode: -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d -int(1) +Default Mode: Parameter must be an array or an object that implements Countable -COUNT_NORMAL Mode: -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d -int(1) +COUNT_NORMAL Mode: Parameter must be an array or an object that implements Countable -COUNT_RECURSIVE Mode: -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d -int(1) +COUNT_RECURSIVE Mode: Parameter must be an array or an object that implements Countable -- Iteration 2 -- -Default Mode: -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d -int(1) +Default Mode: Parameter must be an array or an object that implements Countable -COUNT_NORMAL Mode: -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d -int(1) +COUNT_NORMAL Mode: Parameter must be an array or an object that implements Countable -COUNT_RECURSIVE Mode: -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d -int(1) +COUNT_RECURSIVE Mode: Parameter must be an array or an object that implements Countable -- Iteration 3 -- -Default Mode: -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d -int(1) +Default Mode: Parameter must be an array or an object that implements Countable -COUNT_NORMAL Mode: -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d -int(1) +COUNT_NORMAL Mode: Parameter must be an array or an object that implements Countable -COUNT_RECURSIVE Mode: -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d -int(1) +COUNT_RECURSIVE Mode: Parameter must be an array or an object that implements Countable -- Iteration 4 -- -Default Mode: -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d -int(1) +Default Mode: Parameter must be an array or an object that implements Countable -COUNT_NORMAL Mode: -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d -int(1) +COUNT_NORMAL Mode: Parameter must be an array or an object that implements Countable -COUNT_RECURSIVE Mode: -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d -int(1) +COUNT_RECURSIVE Mode: Parameter must be an array or an object that implements Countable -- Iteration 5 -- -Default Mode: -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d -int(1) +Default Mode: Parameter must be an array or an object that implements Countable -COUNT_NORMAL Mode: -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d -int(1) +COUNT_NORMAL Mode: Parameter must be an array or an object that implements Countable -COUNT_RECURSIVE Mode: -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d -int(1) +COUNT_RECURSIVE Mode: Parameter must be an array or an object that implements Countable Done diff --git a/ext/standard/tests/array/sizeof_variation1.phpt b/ext/standard/tests/array/sizeof_variation1.phpt index e98c334267111..0e5e035ba6892 100644 --- a/ext/standard/tests/array/sizeof_variation1.phpt +++ b/ext/standard/tests/array/sizeof_variation1.phpt @@ -2,10 +2,11 @@ Test sizeof() function : usage variations - for all scalar types and resource variable --FILE-- getMessage() . "\n"; + } + echo "\n"; + + echo "COUNT_NORMAL Mode: "; + try { + var_dump( sizeof($value, COUNT_NORMAL) ); + } catch (\TypeError $e) { + echo $e->getMessage() . "\n"; + } + echo "\n"; + + echo "COUNT_RECURSIVE Mode: "; + try { + var_dump( sizeof($value, COUNT_RECURSIVE) ); + } catch (\TypeError $e) { + echo $e->getMessage() . "\n"; + } + echo "\n"; + + $counter++; } - -echo "Done"; ?> --EXPECTF-- *** Testing sizeof() : usage variations *** --- Testing sizeof() for all scalar types in default,COUNT_NORMAL and COUNT_RECURSIVE mode --- -- Iteration 1 -- -Default Mode: -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d -int(1) +Default Mode: Parameter must be an array or an object that implements Countable -COUNT_NORMAL Mode: -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d -int(1) +COUNT_NORMAL Mode: Parameter must be an array or an object that implements Countable -COUNT_RECURSIVE Mode: -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d -int(1) +COUNT_RECURSIVE Mode: Parameter must be an array or an object that implements Countable -- Iteration 2 -- -Default Mode: -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d -int(1) +Default Mode: Parameter must be an array or an object that implements Countable -COUNT_NORMAL Mode: -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d -int(1) +COUNT_NORMAL Mode: Parameter must be an array or an object that implements Countable -COUNT_RECURSIVE Mode: -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d -int(1) +COUNT_RECURSIVE Mode: Parameter must be an array or an object that implements Countable -- Iteration 3 -- -Default Mode: -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d -int(1) +Default Mode: Parameter must be an array or an object that implements Countable -COUNT_NORMAL Mode: -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d -int(1) +COUNT_NORMAL Mode: Parameter must be an array or an object that implements Countable -COUNT_RECURSIVE Mode: -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d -int(1) +COUNT_RECURSIVE Mode: Parameter must be an array or an object that implements Countable -- Iteration 4 -- -Default Mode: -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d -int(1) +Default Mode: Parameter must be an array or an object that implements Countable -COUNT_NORMAL Mode: -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d -int(1) +COUNT_NORMAL Mode: Parameter must be an array or an object that implements Countable -COUNT_RECURSIVE Mode: -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d -int(1) +COUNT_RECURSIVE Mode: Parameter must be an array or an object that implements Countable -- Iteration 5 -- -Default Mode: -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d -int(1) +Default Mode: Parameter must be an array or an object that implements Countable -COUNT_NORMAL Mode: -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d -int(1) +COUNT_NORMAL Mode: Parameter must be an array or an object that implements Countable -COUNT_RECURSIVE Mode: -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d -int(1) +COUNT_RECURSIVE Mode: Parameter must be an array or an object that implements Countable -- Iteration 6 -- -Default Mode: -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d -int(1) +Default Mode: Parameter must be an array or an object that implements Countable -COUNT_NORMAL Mode: -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d -int(1) +COUNT_NORMAL Mode: Parameter must be an array or an object that implements Countable -COUNT_RECURSIVE Mode: -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d -int(1) +COUNT_RECURSIVE Mode: Parameter must be an array or an object that implements Countable -- Iteration 7 -- -Default Mode: -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d -int(1) +Default Mode: Parameter must be an array or an object that implements Countable -COUNT_NORMAL Mode: -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d -int(1) +COUNT_NORMAL Mode: Parameter must be an array or an object that implements Countable -COUNT_RECURSIVE Mode: -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d -int(1) +COUNT_RECURSIVE Mode: Parameter must be an array or an object that implements Countable -- Iteration 8 -- Default Mode: -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d +Deprecated: sizeof(): Passing null is deprecated in %s on line %d int(0) COUNT_NORMAL Mode: -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d +Deprecated: sizeof(): Passing null is deprecated in %s on line %d int(0) COUNT_RECURSIVE Mode: -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d +Deprecated: sizeof(): Passing null is deprecated in %s on line %d int(0) -- Iteration 9 -- Default Mode: -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d +Deprecated: sizeof(): Passing null is deprecated in %s on line %d int(0) COUNT_NORMAL Mode: -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d +Deprecated: sizeof(): Passing null is deprecated in %s on line %d int(0) COUNT_RECURSIVE Mode: -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d +Deprecated: sizeof(): Passing null is deprecated in %s on line %d int(0) -- Iteration 10 -- -Default Mode: -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d -int(1) +Default Mode: Parameter must be an array or an object that implements Countable -COUNT_NORMAL Mode: -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d -int(1) +COUNT_NORMAL Mode: Parameter must be an array or an object that implements Countable -COUNT_RECURSIVE Mode: -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d -int(1) +COUNT_RECURSIVE Mode: Parameter must be an array or an object that implements Countable -- Iteration 11 -- -Default Mode: -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d -int(1) +Default Mode: Parameter must be an array or an object that implements Countable -COUNT_NORMAL Mode: -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d -int(1) +COUNT_NORMAL Mode: Parameter must be an array or an object that implements Countable -COUNT_RECURSIVE Mode: -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d -int(1) +COUNT_RECURSIVE Mode: Parameter must be an array or an object that implements Countable -- Iteration 12 -- -Default Mode: -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d -int(1) +Default Mode: Parameter must be an array or an object that implements Countable -COUNT_NORMAL Mode: -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d -int(1) +COUNT_NORMAL Mode: Parameter must be an array or an object that implements Countable -COUNT_RECURSIVE Mode: -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d -int(1) +COUNT_RECURSIVE Mode: Parameter must be an array or an object that implements Countable -- Iteration 13 -- -Default Mode: -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d -int(1) +Default Mode: Parameter must be an array or an object that implements Countable -COUNT_NORMAL Mode: -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d -int(1) +COUNT_NORMAL Mode: Parameter must be an array or an object that implements Countable -COUNT_RECURSIVE Mode: -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d -int(1) +COUNT_RECURSIVE Mode: Parameter must be an array or an object that implements Countable -- Iteration 14 -- -Default Mode: -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d -int(1) +Default Mode: Parameter must be an array or an object that implements Countable -COUNT_NORMAL Mode: -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d -int(1) +COUNT_NORMAL Mode: Parameter must be an array or an object that implements Countable -COUNT_RECURSIVE Mode: -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d -int(1) +COUNT_RECURSIVE Mode: Parameter must be an array or an object that implements Countable -- Iteration 15 -- -Default Mode: -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d -int(1) +Default Mode: Parameter must be an array or an object that implements Countable -COUNT_NORMAL Mode: -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d -int(1) +COUNT_NORMAL Mode: Parameter must be an array or an object that implements Countable -COUNT_RECURSIVE Mode: -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d -int(1) +COUNT_RECURSIVE Mode: Parameter must be an array or an object that implements Countable -- Iteration 16 -- -Default Mode: -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d -int(1) +Default Mode: Parameter must be an array or an object that implements Countable -COUNT_NORMAL Mode: -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d -int(1) +COUNT_NORMAL Mode: Parameter must be an array or an object that implements Countable -COUNT_RECURSIVE Mode: -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d -int(1) +COUNT_RECURSIVE Mode: Parameter must be an array or an object that implements Countable -- Iteration 17 -- -Default Mode: -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d -int(1) +Default Mode: Parameter must be an array or an object that implements Countable -COUNT_NORMAL Mode: -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d -int(1) +COUNT_NORMAL Mode: Parameter must be an array or an object that implements Countable -COUNT_RECURSIVE Mode: -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d -int(1) +COUNT_RECURSIVE Mode: Parameter must be an array or an object that implements Countable -- Iteration 18 -- Default Mode: -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d +Deprecated: sizeof(): Passing null is deprecated in %s on line %d int(0) COUNT_NORMAL Mode: -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d +Deprecated: sizeof(): Passing null is deprecated in %s on line %d int(0) COUNT_RECURSIVE Mode: -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d +Deprecated: sizeof(): Passing null is deprecated in %s on line %d int(0) -- Iteration 19 -- -Default Mode: -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d -int(1) +Default Mode: Parameter must be an array or an object that implements Countable -COUNT_NORMAL Mode: -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d -int(1) - -COUNT_RECURSIVE Mode: -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d -int(1) +COUNT_NORMAL Mode: Parameter must be an array or an object that implements Countable -Done +COUNT_RECURSIVE Mode: Parameter must be an array or an object that implements Countable diff --git a/ext/standard/tests/array/sizeof_variation2.phpt b/ext/standard/tests/array/sizeof_variation2.phpt index 1bc815d7c48e7..af5aa468e89d0 100644 --- a/ext/standard/tests/array/sizeof_variation2.phpt +++ b/ext/standard/tests/array/sizeof_variation2.phpt @@ -2,10 +2,11 @@ Test sizeof() function : usage variations - different array values for 'var' argument --FILE-- getMessage() . "\n"; + } + echo "\n"; + + echo "COUNT_NORMAL Mode:"; + try { + var_dump( sizeof($value, COUNT_NORMAL) ); + } catch (\TypeError $e) { + echo $e->getMessage() . "\n"; + } + echo "\n"; + + echo "COUNT_RECURSIVE Mode:"; + try { + var_dump( sizeof($value, COUNT_RECURSIVE) ); + } catch (\TypeError $e) { + echo $e->getMessage() . "\n"; + } + echo "\n"; + + $counter++; } fclose($fp); -echo "Done"; ?> --EXPECTF-- *** Testing sizeof() : usage variations *** --- Testing sizeof() for all kinds of unset variables in default, Normal and Recursive Modes --- -- Iteration 1 -- -Default Mode: -Warning: Undefined variable $value in %s on line %d +Default Mode: +Deprecated: sizeof(): Passing null is deprecated in %s on line %d -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d +Warning: Undefined variable $value in %s on line %d int(0) -COUNT_NORMAL Mode: +COUNT_NORMAL Mode: Warning: Undefined variable $value in %s on line %d -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d +Deprecated: sizeof(): Passing null is deprecated in %s on line %d int(0) -COUNT_RECURSIVE Mode: +COUNT_RECURSIVE Mode: Warning: Undefined variable $value in %s on line %d -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d +Deprecated: sizeof(): Passing null is deprecated in %s on line %d int(0) -- Iteration 2 -- -Default Mode: -Warning: Undefined variable $value in %s on line %d +Default Mode: +Deprecated: sizeof(): Passing null is deprecated in %s on line %d -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d +Warning: Undefined variable $value in %s on line %d int(0) -COUNT_NORMAL Mode: +COUNT_NORMAL Mode: Warning: Undefined variable $value in %s on line %d -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d +Deprecated: sizeof(): Passing null is deprecated in %s on line %d int(0) -COUNT_RECURSIVE Mode: +COUNT_RECURSIVE Mode: Warning: Undefined variable $value in %s on line %d -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d +Deprecated: sizeof(): Passing null is deprecated in %s on line %d int(0) -- Iteration 3 -- -Default Mode: -Warning: Undefined variable $value in %s on line %d +Default Mode: +Deprecated: sizeof(): Passing null is deprecated in %s on line %d -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d +Warning: Undefined variable $value in %s on line %d int(0) -COUNT_NORMAL Mode: +COUNT_NORMAL Mode: Warning: Undefined variable $value in %s on line %d -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d +Deprecated: sizeof(): Passing null is deprecated in %s on line %d int(0) -COUNT_RECURSIVE Mode: +COUNT_RECURSIVE Mode: Warning: Undefined variable $value in %s on line %d -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d +Deprecated: sizeof(): Passing null is deprecated in %s on line %d int(0) -- Iteration 4 -- -Default Mode: -Warning: Undefined variable $value in %s on line %d +Default Mode: +Deprecated: sizeof(): Passing null is deprecated in %s on line %d -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d +Warning: Undefined variable $value in %s on line %d int(0) -COUNT_NORMAL Mode: +COUNT_NORMAL Mode: Warning: Undefined variable $value in %s on line %d -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d +Deprecated: sizeof(): Passing null is deprecated in %s on line %d int(0) -COUNT_RECURSIVE Mode: +COUNT_RECURSIVE Mode: Warning: Undefined variable $value in %s on line %d -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d +Deprecated: sizeof(): Passing null is deprecated in %s on line %d int(0) -- Iteration 5 -- -Default Mode: -Warning: Undefined variable $value in %s on line %d +Default Mode: +Deprecated: sizeof(): Passing null is deprecated in %s on line %d -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d +Warning: Undefined variable $value in %s on line %d int(0) -COUNT_NORMAL Mode: +COUNT_NORMAL Mode: Warning: Undefined variable $value in %s on line %d -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d +Deprecated: sizeof(): Passing null is deprecated in %s on line %d int(0) -COUNT_RECURSIVE Mode: +COUNT_RECURSIVE Mode: Warning: Undefined variable $value in %s on line %d -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d +Deprecated: sizeof(): Passing null is deprecated in %s on line %d int(0) -- Iteration 6 -- -Default Mode: -Warning: Undefined variable $value in %s on line %d +Default Mode: +Deprecated: sizeof(): Passing null is deprecated in %s on line %d -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d +Warning: Undefined variable $value in %s on line %d int(0) -COUNT_NORMAL Mode: +COUNT_NORMAL Mode: Warning: Undefined variable $value in %s on line %d -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d +Deprecated: sizeof(): Passing null is deprecated in %s on line %d int(0) -COUNT_RECURSIVE Mode: +COUNT_RECURSIVE Mode: Warning: Undefined variable $value in %s on line %d -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d +Deprecated: sizeof(): Passing null is deprecated in %s on line %d int(0) -- Iteration 7 -- -Default Mode: -Warning: Undefined variable $value in %s on line %d +Default Mode: +Deprecated: sizeof(): Passing null is deprecated in %s on line %d -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d +Warning: Undefined variable $value in %s on line %d int(0) -COUNT_NORMAL Mode: +COUNT_NORMAL Mode: Warning: Undefined variable $value in %s on line %d -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d +Deprecated: sizeof(): Passing null is deprecated in %s on line %d int(0) -COUNT_RECURSIVE Mode: +COUNT_RECURSIVE Mode: Warning: Undefined variable $value in %s on line %d -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d +Deprecated: sizeof(): Passing null is deprecated in %s on line %d int(0) -- Iteration 8 -- -Default Mode: -Warning: Undefined variable $value in %s on line %d +Default Mode: +Deprecated: sizeof(): Passing null is deprecated in %s on line %d -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d +Warning: Undefined variable $value in %s on line %d int(0) -COUNT_NORMAL Mode: +COUNT_NORMAL Mode: Warning: Undefined variable $value in %s on line %d -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d +Deprecated: sizeof(): Passing null is deprecated in %s on line %d int(0) -COUNT_RECURSIVE Mode: +COUNT_RECURSIVE Mode: Warning: Undefined variable $value in %s on line %d -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d +Deprecated: sizeof(): Passing null is deprecated in %s on line %d int(0) -- Iteration 9 -- -Default Mode: -Warning: Undefined variable $value in %s on line %d +Default Mode: +Deprecated: sizeof(): Passing null is deprecated in %s on line %d -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d +Warning: Undefined variable $value in %s on line %d int(0) -COUNT_NORMAL Mode: +COUNT_NORMAL Mode: Warning: Undefined variable $value in %s on line %d -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d +Deprecated: sizeof(): Passing null is deprecated in %s on line %d int(0) -COUNT_RECURSIVE Mode: +COUNT_RECURSIVE Mode: Warning: Undefined variable $value in %s on line %d -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d +Deprecated: sizeof(): Passing null is deprecated in %s on line %d int(0) -- Iteration 10 -- -Default Mode: -Warning: Undefined variable $value in %s on line %d +Default Mode: +Deprecated: sizeof(): Passing null is deprecated in %s on line %d -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d +Warning: Undefined variable $value in %s on line %d int(0) -COUNT_NORMAL Mode: +COUNT_NORMAL Mode: Warning: Undefined variable $value in %s on line %d -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d +Deprecated: sizeof(): Passing null is deprecated in %s on line %d int(0) -COUNT_RECURSIVE Mode: +COUNT_RECURSIVE Mode: Warning: Undefined variable $value in %s on line %d -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d +Deprecated: sizeof(): Passing null is deprecated in %s on line %d int(0) -- Iteration 11 -- -Default Mode: -Warning: Undefined variable $value in %s on line %d +Default Mode: +Deprecated: sizeof(): Passing null is deprecated in %s on line %d -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d +Warning: Undefined variable $value in %s on line %d int(0) -COUNT_NORMAL Mode: +COUNT_NORMAL Mode: Warning: Undefined variable $value in %s on line %d -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d +Deprecated: sizeof(): Passing null is deprecated in %s on line %d int(0) -COUNT_RECURSIVE Mode: +COUNT_RECURSIVE Mode: Warning: Undefined variable $value in %s on line %d -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d +Deprecated: sizeof(): Passing null is deprecated in %s on line %d int(0) -- Iteration 12 -- -Default Mode: -Warning: Undefined variable $value in %s on line %d +Default Mode: +Deprecated: sizeof(): Passing null is deprecated in %s on line %d -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d +Warning: Undefined variable $value in %s on line %d int(0) -COUNT_NORMAL Mode: +COUNT_NORMAL Mode: Warning: Undefined variable $value in %s on line %d -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d +Deprecated: sizeof(): Passing null is deprecated in %s on line %d int(0) -COUNT_RECURSIVE Mode: +COUNT_RECURSIVE Mode: Warning: Undefined variable $value in %s on line %d -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d +Deprecated: sizeof(): Passing null is deprecated in %s on line %d int(0) -- Iteration 13 -- -Default Mode: -Warning: Undefined variable $value in %s on line %d +Default Mode: +Deprecated: sizeof(): Passing null is deprecated in %s on line %d -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d +Warning: Undefined variable $value in %s on line %d int(0) -COUNT_NORMAL Mode: +COUNT_NORMAL Mode: Warning: Undefined variable $value in %s on line %d -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d +Deprecated: sizeof(): Passing null is deprecated in %s on line %d int(0) -COUNT_RECURSIVE Mode: +COUNT_RECURSIVE Mode: Warning: Undefined variable $value in %s on line %d -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d +Deprecated: sizeof(): Passing null is deprecated in %s on line %d int(0) -- Iteration 14 -- -Default Mode: -Warning: Undefined variable $value in %s on line %d +Default Mode: +Deprecated: sizeof(): Passing null is deprecated in %s on line %d -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d +Warning: Undefined variable $value in %s on line %d int(0) -COUNT_NORMAL Mode: +COUNT_NORMAL Mode: Warning: Undefined variable $value in %s on line %d -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d +Deprecated: sizeof(): Passing null is deprecated in %s on line %d int(0) -COUNT_RECURSIVE Mode: +COUNT_RECURSIVE Mode: Warning: Undefined variable $value in %s on line %d -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d +Deprecated: sizeof(): Passing null is deprecated in %s on line %d int(0) -- Iteration 15 -- -Default Mode: -Warning: Undefined variable $value in %s on line %d +Default Mode: +Deprecated: sizeof(): Passing null is deprecated in %s on line %d -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d +Warning: Undefined variable $value in %s on line %d int(0) -COUNT_NORMAL Mode: +COUNT_NORMAL Mode: Warning: Undefined variable $value in %s on line %d -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d +Deprecated: sizeof(): Passing null is deprecated in %s on line %d int(0) -COUNT_RECURSIVE Mode: +COUNT_RECURSIVE Mode: Warning: Undefined variable $value in %s on line %d -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d +Deprecated: sizeof(): Passing null is deprecated in %s on line %d int(0) -- Iteration 16 -- -Default Mode: -Warning: Undefined variable $value in %s on line %d +Default Mode: +Deprecated: sizeof(): Passing null is deprecated in %s on line %d -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d +Warning: Undefined variable $value in %s on line %d int(0) -COUNT_NORMAL Mode: +COUNT_NORMAL Mode: Warning: Undefined variable $value in %s on line %d -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d +Deprecated: sizeof(): Passing null is deprecated in %s on line %d int(0) -COUNT_RECURSIVE Mode: +COUNT_RECURSIVE Mode: Warning: Undefined variable $value in %s on line %d -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d +Deprecated: sizeof(): Passing null is deprecated in %s on line %d int(0) -- Iteration 17 -- -Default Mode: -Warning: Undefined variable $value in %s on line %d +Default Mode: +Deprecated: sizeof(): Passing null is deprecated in %s on line %d -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d +Warning: Undefined variable $value in %s on line %d int(0) -COUNT_NORMAL Mode: +COUNT_NORMAL Mode: Warning: Undefined variable $value in %s on line %d -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d +Deprecated: sizeof(): Passing null is deprecated in %s on line %d int(0) -COUNT_RECURSIVE Mode: +COUNT_RECURSIVE Mode: Warning: Undefined variable $value in %s on line %d -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d +Deprecated: sizeof(): Passing null is deprecated in %s on line %d int(0) -- Iteration 18 -- -Default Mode: -Warning: Undefined variable $value in %s on line %d +Default Mode: +Deprecated: sizeof(): Passing null is deprecated in %s on line %d -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d +Warning: Undefined variable $value in %s on line %d int(0) -COUNT_NORMAL Mode: +COUNT_NORMAL Mode: Warning: Undefined variable $value in %s on line %d -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d +Deprecated: sizeof(): Passing null is deprecated in %s on line %d int(0) -COUNT_RECURSIVE Mode: +COUNT_RECURSIVE Mode: Warning: Undefined variable $value in %s on line %d -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d +Deprecated: sizeof(): Passing null is deprecated in %s on line %d int(0) -- Iteration 19 -- -Default Mode: -Warning: Undefined variable $value in %s on line %d +Default Mode: +Deprecated: sizeof(): Passing null is deprecated in %s on line %d -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d +Warning: Undefined variable $value in %s on line %d int(0) -COUNT_NORMAL Mode: +COUNT_NORMAL Mode: Warning: Undefined variable $value in %s on line %d -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d +Deprecated: sizeof(): Passing null is deprecated in %s on line %d int(0) -COUNT_RECURSIVE Mode: +COUNT_RECURSIVE Mode: Warning: Undefined variable $value in %s on line %d -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d +Deprecated: sizeof(): Passing null is deprecated in %s on line %d int(0) -- Iteration 20 -- -Default Mode: -Warning: Undefined variable $value in %s on line %d +Default Mode: +Deprecated: sizeof(): Passing null is deprecated in %s on line %d -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d +Warning: Undefined variable $value in %s on line %d int(0) -COUNT_NORMAL Mode: +COUNT_NORMAL Mode: Warning: Undefined variable $value in %s on line %d -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d +Deprecated: sizeof(): Passing null is deprecated in %s on line %d int(0) -COUNT_RECURSIVE Mode: +COUNT_RECURSIVE Mode: Warning: Undefined variable $value in %s on line %d -Warning: sizeof(): Parameter must be an array or an object that implements Countable in %s on line %d +Deprecated: sizeof(): Passing null is deprecated in %s on line %d int(0) - -Done diff --git a/ext/standard/tests/general_functions/is_countable_with_variables.phpt b/ext/standard/tests/general_functions/is_countable_with_variables.phpt index 0cb18769d64b8..feb3d27944b96 100644 --- a/ext/standard/tests/general_functions/is_countable_with_variables.phpt +++ b/ext/standard/tests/general_functions/is_countable_with_variables.phpt @@ -16,7 +16,7 @@ if (is_countable($foo)) { $bar = null; if (!is_countable($bar)) { - count($bar); + var_dump(count($bar)); } ?> --EXPECTF-- @@ -25,4 +25,5 @@ bool(true) bool(false) int(2) -Warning: count(): Parameter must be an array or an object that implements Countable in %s on line %d +Deprecated: count(): Passing null is deprecated in %s on line %d +int(0)