Heim  >  Artikel  >  Backend-Entwicklung  >  Eine kurze Diskussion zum fünften PHP-Quellcode: Über die Erstellung eines Array-Arrays

Eine kurze Diskussion zum fünften PHP-Quellcode: Über die Erstellung eines Array-Arrays

不言
不言Original
2018-06-28 16:41:391559Durchsuche

Dieser Artikel führt hauptsächlich eine kurze Diskussion über den PHP-Quellcode 5 ein: In Bezug auf die Erstellung von Array-Arrays hat er einen gewissen Referenzwert. Jetzt kann ich ihn mit Ihnen teilen

Debuggen in PHP Verwenden Sie cli, um PHP-Dateien in der Umgebung auszuführen
, um den Code Schritt für Schritt zu verfolgen. Da ich mit C und der lexikalischen Analyse nicht vertraut bin
werden folgende PHP-Dateien verwendet:

 <?PHP
 $a = array(1, 2, 3);
 var_dump($a);

Der Code wird einfach wie folgt verfolgt:

 ===>php_execute_script(&file_handle TSRMLS_CC);     //php_cli.c line1130
 ==> retval = (zend_execute_scripts(ZEND_REQUIRE TSRMLS_CC, NULL, 3, prepend_file_p, primary_file, append_file_p) == SUCCESS);    //    main.c 2023行
 ==> EG(active_op_array) = zend_compile_file(file_handle, type TSRMLS_CC);      //    zend.c 1126行
 ==> compiler_result = zendparse(TSRMLS_C);   //    zend_language_scanner.c  3420行==> zend-language_parse.c     2773行==>case 382:     { zend_do_init_array(&(yyval), &(yyvsp[(1) - (1)]), NULL, 0 TSRMLS_CC); }    //    zend_language_parser.c  4689行
    ==>void zend_do_init_array(znode *result, znode *expr, znode *offset, zend_bool is_ref TSRMLS_DC)    //    zend_compile.c 3348行 
 
 ==>case 380:    { zend_do_add_array_element(&(yyval), &(yyvsp[(3) - (3)]), NULL, 0 TSRMLS_CC); }//    zend_language_parser.c  4684行
    ==>void zend_do_add_array_element(znode *result, znode *expr, znode *offset, zend_bool is_ref TSRMLS_DC)    //    zend_compile.c 3371行

Während des Codeverfolgungsprozesses wurde festgestellt, dass beim Erzeugen eines Syntaxbaums durch den PHP-Quellcode beim Auftreffen auf das Array und die erste Zahl keine Array-bezogene Operation erfolgt . Die Funktion zend_do_init_array wird nur aufgerufen, wenn das Komma nach 1 analysiert wird, wodurch ein Array erstellt wird.

Es gibt keine Erklärung für den Code viel über lexikalische Analyse und Syntaxanalyse.
Sonstiges: Wenn nach der letzten Codezeile im PHP-Programm kein Zeilenumbruch erfolgt, werden Sie beim Lesen der Quellcodedatei eine Reihe verstümmelter Zeichen sehen

Fortsetzung folgt...

Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, er wird für das Studium aller hilfreich sein. Bitte überprüfen Sie weitere verwandte Inhalte. Folgen Sie der chinesischen PHP-Website!

Verwandte Empfehlungen:

Eine kurze Diskussion des PHP-Quellcodes 4: Über die Zählfunktion

Eine kurze Diskussion von PHP-Quellcode 3: Über strrchr, strstr, stristr-Funktion

Eine kurze Diskussion über PHP-Quellcode 2: Über strlen, strtolower, strtoupper, ord, chr-Funktion

Das obige ist der detaillierte Inhalt vonEine kurze Diskussion zum fünften PHP-Quellcode: Über die Erstellung eines Array-Arrays. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen 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