Strlen-Funktionsbeschreibung.
int strlen ( string $string )
In diesem Artikel erfahren wir, dass die strlen-Funktion durch Zend Engine definiert wird. Die Funktionsdefinition kann hier eingesehen werden.
Der Quellcode der Funktion ist auch hier angegeben:
ZEND_FUNCTION(strlen) { char *s1; int s1_len; if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &s1, &s1_len) == FAILURE) { return; } RETVAL_LONG(s1_len); }
Im Artikel wurde erwähnt, dass die Funktion sehr einfach ist und keiner weiteren Erklärung bedarf. In diesem Artikel wird auch die Funktion zend_parse_parameters vorgestellt. Der Autor ist dumm, deshalb möchte ich verstehen, wie die Funktion zend_parse_parameters die Variablenlänge zurückgibt.
In der Funktion zend_parse_arg_impl, in der die Parameter analysiert werden, schauen wir uns weiterhin den Fall-Zweig an. Dieser Zweig ist das Parsen von String-Variablen.
int *pl = va_arg(*va, int *); ist die Definition der Stringlängenvariablen.
Schauen Sie weiter nach unten und Sie können die Zuweisungsanweisung zur pl-Variablen sehen: *pl = Z_STRLEN_PP(arg);.
Das Makro Z_STRLEN_PP ist in der Datei zend_operators.h definiert:
#define Z_STRLEN_PP(zval_pp) Z_STRLEN(**zval_pp)
Sehen wir uns weiter an Z_STRLEN-Makrodefinition, #define Z_STRLEN(zval) (zval).value.str.len. Daraus können wir erkennen, dass die strlen-Funktion durch direkte Rückgabe des len-Attributs von str in der zval-Struktur implementiert wird.
Weitere Artikel zur Strlen-Funktion in PHP finden Sie auf der chinesischen PHP-Website!