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 }
  • 相关阅读:
    c# 异步和同步问题(转载)
    用Python作GIS之四:Tkinter基本界面的搭建
    Linux必知必会--vmstat
    Linux必知必会--awk
    Linux必知必会--sed
    Linux必知必会--grep
    Linux必知必会--curl
    康威定律
    移动端抓包合集
    MySQL重置自增id
  • 原文地址:https://www.cnblogs.com/natian-ws/p/9141945.html
Copyright © 2011-2022 走看看