summaryrefslogtreecommitdiff
path: root/Zend/zend_API.c
diff options
context:
space:
mode:
authorGabriel Caruso <carusogabriel34@gmail.com>2018-01-19 20:01:40 -0200
committerNikita Popov <nikita.ppv@gmail.com>2018-03-11 16:41:16 +0100
commitd0ee2a8254c69546c7191ac26cdc0499eba27acf (patch)
tree0607e58a4afb3b439c8f2a98b466fda472c3c33c /Zend/zend_API.c
parent57896cf5158732101d6e09843b34f6b5f8fbba8a (diff)
downloadphp-git-d0ee2a8254c69546c7191ac26cdc0499eba27acf.tar.gz
Add is_countable function
RFC: https://wiki.php.net/rfc/is-countable
Diffstat (limited to 'Zend/zend_API.c')
-rw-r--r--Zend/zend_API.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/Zend/zend_API.c b/Zend/zend_API.c
index ca68310bc9..924457916d 100644
--- a/Zend/zend_API.c
+++ b/Zend/zend_API.c
@@ -4379,6 +4379,23 @@ ZEND_API zend_bool zend_is_iterable(zval *iterable) /* {{{ */
}
/* }}} */
+ZEND_API zend_bool zend_is_countable(zval *countable) /* {{{ */
+{
+ switch (Z_TYPE_P(countable)) {
+ case IS_ARRAY:
+ return 1;
+ case IS_OBJECT:
+ if (Z_OBJ_HT_P(countable)->count_elements) {
+ return 1;
+ }
+
+ return instanceof_function(Z_OBJCE_P(countable), zend_ce_countable);
+ default:
+ return 0;
+ }
+}
+/* }}} */
+
/*
* Local variables:
* tab-width: 4