Mylisz pojęcia. W C/C++ (chociaż to głównie w C, bo w C++ jest obiekt string) jeżeli mieliśmy tablicę znakową (tzw. "string") to była ona kończona \0, żeby takie funkcje jak printf, strlen itd. wiedziały gdzie kończy się łanćuch.
Jeżeli chcesz policzyć długość łańcucha w PHP - funkcja strlen (dla UTF8 mb_strlen), policzyć ilość elementów tablicy - funkcja count.
Bebechy funkcji count:
Kod
/* {{{ proto int count(mixed var [, int mode])
Count the number of elements in a variable (usually an array) */
PHP_FUNCTION(count)
{
zval *array;
long mode = COUNT_NORMAL;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z|l", &array, &mode) == FAILURE) {
return;
}
switch (Z_TYPE_P(array)) {
case IS_NULL:
RETURN_LONG(0);
break;
case IS_ARRAY:
RETURN_LONG (php_count_recursive (array, mode TSRMLS_CC));
break;
case IS_OBJECT: {
#ifdef HAVE_SPL
zval *retval;
#endif
/* 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(array, &Z_LVAL_P(return_value) TSRMLS_CC)) {
return;
}
}
#ifdef HAVE_SPL
/* if not and the object implements Countable we call its count() method */
if (Z_OBJ_HT_P(array)->get_class_entry && instanceof_function(Z_OBJCE_P(array), spl_ce_Countable TSRMLS_CC)) {
zend_call_method_with_0_params(&array, NULL, NULL, "count", &retval);
if (retval) {
convert_to_long_ex(&retval);
RETVAL_LONG(Z_LVAL_P(retval));
zval_ptr_dtor(&retval);
}
return;
}
#endif
}
default:
RETURN_LONG(1);
break;
}
}
/* }}} */
Znajduje się ona w /ext/standard/array.c
PS. Jak chcesz wyszukać implementację jakiejś funkcji w źródłach PHP wyszukuj tekstu PHP_FUNCTION(nazwafunkcji).