In diesem Artikel wird hauptsächlich die kurze Diskussion zum PHP-Quellcode 13 vorgestellt: Die Einführung von array_change_key_case und array_chunk hat einen gewissen Referenzwert. Jetzt kann ich Freunde in Not darauf verweisen.
Kurze Diskussion PHP-Quellcode 13: Einführung in array_change_key_case, array_chunk
array_change_key_case
(PHP 4 >= 4.2.0, PHP 5)
array_change_key_case – Gibt String-Schlüsselnamen in Kleinbuchstaben zurück. Oder Großbuchstaben-Array
Beschreibung
array array_change_key_case ( array input [, int case] )
array_change_key_case() Alle Schlüsselnamen im Eingabearray in Klein- oder Großbuchstaben ändern. Änderungen werden basierend auf dem letztgenannten Optionsfallparameter vorgenommen. Hier können zwei Konstanten verwendet werden, CASE_UPPER und CASE_LOWER. Der Standardwert ist CASE_LOWER. Diese Funktion ändert den numerischen Index nicht.
Als ich diese Funktion sah, dachte ich, sie sollte die Hash-Tabelle durchlaufen, in der sich das Array befindet, und dann den entsprechenden Schlüsselwert in Groß- oder Kleinbuchstaben umwandeln (wenn es sich um einen Zeichenfolgenschlüsselwert handelt).
Nach dem Lesen Es gibt einige Unterschiede. Das Programm fügt einen zur Referenz jedes Array-Elements hinzu
array_chunk
(PHP 4 >= 4.2.0, PHP 5)
array_chunk – Teilen Sie ein Array in mehrere
Beschreibung
array array_chunk (array input, int size [, bool Preserve_keys])
array_chunk() teilt ein Array in mehrere Arrays auf, wobei die Anzahl der Zellen in jedem Array durch bestimmt wird Größe . Das letzte Array kann einige Elemente weniger enthalten. Das resultierende Array ist eine Zelle in einem mehrdimensionalen Array, dessen Indizes bei Null beginnen.
Setzen Sie den optionalen Parameter „preserve_keys“ auf TRUE, damit PHP die ursprünglichen Schlüsselnamen im Eingabearray beibehalten kann. Wenn Sie FALSE angeben, wird jedes Ergebnisarray mit einer neuen Nummer beginnend bei Null indiziert. Der Standardwert ist FALSE.
Anweisungen zur Programmimplementierung:
array_init(return_value); // 初始化返回值 数组 zend_hash_internal_pointer_reset_ex(Z_ARRVAL_P(input), &pos); while (zend_hash_get_current_data_ex(Z_ARRVAL_P(input), (void**)&entry, &pos) == SUCCESS) { // 遍历HASH TABLE/* 如果不存在,则创建并初始化chunk */ if (!chunk) { MAKE_STD_ZVAL(chunk);array_init(chunk);} /* 给数组元素的引用加一,相当于 *entry->refcount++; */ zval_add_ref(entry); if (preserve_keys) { // 保留键值 key_type = zend_hash_get_current_key_ex(Z_ARRVAL_P(input), &str_key,&str_key_len, &num_key, 0, &pos); // 取元素的key值类型,此值是要所元素的nKeyLength属性判断 if (key_type == HASH_KEY_IS_STRING) { // 字符串类型add_assoc_zval_ex(chunk, str_key, str_key_len, *entry); } else { add_index_zval(chunk, num_key, *entry);} } else { add_next_index_zval(chunk, *entry); // 给返回的子数组添加元素} if (!(++current % size)) { // 如果达到分割的界限,则将分割出来创建的子数组添加到返回数组中,并将子数组置为NULl add_next_index_zval(return_value, chunk); chunk = NULL;}zend_hash_move_forward_ex(Z_ARRVAL_P(input), &pos); // 下一个元素} if (chunk) {add_next_index_zval(return_value, chunk); // 剩余的元素}
Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, dass er für das Lernen aller hilfreich ist. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website !
Verwandte Empfehlungen:
Eine kurze Diskussion des PHP-Quellcodes 12: Über return_value Rückgabewert
Eine kurze Diskussion von PHP-Quellcode 11: Einführung in array_key_exists, in_array
Eine kurze Diskussion des PHP-Quellcodes 10: Über array_keys, array_values Funktionen
Das obige ist der detaillierte Inhalt vonEine kurze Diskussion des PHP-Quellcodes 13: Einführung in array_change_key_case und array_chunk. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!