Heim >php教程 >PHP开发 >Sprechen Sie kurz über die Strlen-Funktion in PHP

Sprechen Sie kurz über die Strlen-Funktion in PHP

高洛峰
高洛峰Original
2017-01-05 11:46:481697Durchsuche

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn