zoukankan      html  css  js  c++  java
  • php内置函数分析之array_change_key_case()

     1 PHP_FUNCTION(array_change_key_case)
     2 {
     3     zval *array, *entry;
     4     zend_string *string_key;
     5     zend_string *new_key;
     6     zend_ulong num_key;
     7     zend_long change_to_upper=0;
     8 
     9     if (zend_parse_parameters(ZEND_NUM_ARGS(), "a|l", &array, &change_to_upper) == FAILURE) {
    10         return;
    11     }
    12 
    13     array_init_size(return_value, zend_hash_num_elements(Z_ARRVAL_P(array)));
    14 
    15     ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(array), num_key, string_key, entry) {
    16         if (!string_key) { // 数组键值为数字索引,将数组元素更新到return_value        
    17             entry = zend_hash_index_update(Z_ARRVAL_P(return_value), num_key, entry);
    18         } else { // 数组键值为字符串
    19             // 字符串键值大小写转换
    20             if (change_to_upper) {
    21                 new_key = php_string_toupper(string_key);
    22             } else {
    23                 new_key = php_string_tolower(string_key);
    24             }
    25             // 将数组元素更新到return_value
    26             entry = zend_hash_update(Z_ARRVAL_P(return_value), new_key, entry);
    27             // 释放zend_string, 如果引用数位0,则释放内存。
    28             zend_string_release(new_key);
    29         }
    30         // 增加引用
    31         zval_add_ref(entry);
    32     } ZEND_HASH_FOREACH_END();
    33 }
  • 相关阅读:
    重大利好,Dubbo 3.0要来了。
    SaaS,PaaS,IaaS都是什么鬼?
    为什么Netty这么火?与Mina相比有什么优势?
    (21)python lambda表达式
    (19)python scrapy框架
    (18) python 爬虫实战
    (5)ASP.NET HTML服务器控件
    (17)python Beautiful Soup 4.6
    (4)ASP.NET内置对象1
    (16)网络爬虫
  • 原文地址:https://www.cnblogs.com/natian-ws/p/9141945.html
Copyright © 2011-2022 走看看