Heim > Artikel > Backend-Entwicklung > Eine kurze Diskussion zum PHP-Quellcode 19: Über array_file, Bereichsfunktionen
Dieser Artikel führt hauptsächlich einen kurzen Vortrag über den PHP-Quellcode 19 ein: In Bezug auf die Funktionen array_file und range hat er einen bestimmten Referenzwert. Jetzt kann ich ihn mit Ihnen teilen.
A Kurzer Vortrag über PHP-Quellcode 19: Bezüglich array_file, Bereichsfunktion
array_fill
(PHP 4 >= 4.2.0, PHP 5)
array_fill – füllt das Array
mit dem angegebenen Wert Beschreibung
array array_fill (int start_index, int num, gemischter Wert)
array_fill() füllt ein Array mit num Einträgen unter Verwendung des Werts des Wertparameters, beginnend mit dem durch angegebenen Schlüsselnamen der start_index-Parameter. Beachten Sie, dass num eine Zahl größer als Null sein muss, sonst gibt PHP eine Warnung aus.
Der Parameter start_index kann nur vom Typ String, Ganzzahl und Gleitkomma sein
Der Quellcode lautet wie folgt:
switch (Z_TYPE_PP(start_key)) {case IS_STRING:case IS_LONG:case IS_DOUBLE: ....... convert_to_long_ex(start_key); ......}
Das Programm weist zuerst den ersten Wert return_value zu und führt dann eine Schleife durch num – 1 Mal: Refcount zu diesem Wert hinzufügen und zur Hash-Tabelle von return_value
range
(PHP 3 >= 3.0.8, PHP 4, PHP 5)
Beschreibung
Array-Bereich (gemischt niedrig, gemischt hoch [, Zahlenschritt])
Verwendung von Zeichenarrays Zum Beispiel:
if (Z_TYPE_P(zlow) == IS_STRING && Z_TYPE_P(zhigh) == IS_STRING && Z_STRLEN_P(zlow) >= 1 && Z_STRLEN_P(zhigh) >= 1) { int type1, type2; unsigned char *low, *high; long lstep = (long) step; type1 = is_numeric_string(Z_STRVAL_P(zlow), Z_STRLEN_P(zlow), NULL, NULL, 0); type2 = is_numeric_string(Z_STRVAL_P(zhigh), Z_STRLEN_P(zhigh), NULL, NULL, 0); if (type1 == IS_DOUBLE || type2 == IS_DOUBLE || is_step_double) { goto double_str; } else if (type1 == IS_LONG || type2 == IS_LONG) { goto long_str; } convert_to_string(zlow); // 转化为字符串,此函数的实现在zend_operators.c的536行:ZEND_API void _convert_to_string(zval *op ZEND_FILE_LINE_DC) convert_to_string(zhigh); low = (unsigned char *)Z_STRVAL_P(zlow); // 当所给字符串长度大于1时,取第一个字符 high = (unsigned char *)Z_STRVAL_P(zhigh); if (*low > *high) { // 递减数组 if (lstep <= 0) { err = 1; goto err; } for (; *low >= *high; (*low) -= (unsigned int)lstep) { add_next_index_stringl(return_value, low, 1, 1); if (((signed int)*low - lstep) < 0) { break; } } } else if (*high > *low) { // 递增数组 if (lstep <= 0) { err = 1; goto err; } for (; *low <= *high; (*low) += (unsigned int)lstep) { add_next_index_stringl(return_value, low, 1, 1); if (((signed int)*low + lstep) > 255) { // 只支持ASCII的255个字符 break; } } } else { // 开始和结束相等,则只返回包含一个元素的数组 add_next_index_stringl(return_value, low, 1, 1);}Die Verarbeitung von Gleitkomma und Ganzzahl ist grundsätzlich ähnlich, nur die Methode zum Schreiben in die Hash-Tabelle ist unterschiedlich. Der Gleitkommatyp verwendet add_next_index_double.
Der Ganzzahltyp verwendet add_next_index_long
Eine kurze Diskussion des PHP-Quellcodes 18: Über array_diff_key, array_diff_assoc, array_udiff_assoc Funktion
Kurze Diskussion zum PHP-Quellcode 16: Informationen zur Funktion array_count_values
Das obige ist der detaillierte Inhalt vonEine kurze Diskussion zum PHP-Quellcode 19: Über array_file, Bereichsfunktionen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!