PHP_FUNCTION(array_change_key_case)
{
zval *array, *entry;
zend_string *string_key;
zend_string *new_key;
zend_ulong num_key;
zend_long change_to_upper=; if (zend_parse_parameters(ZEND_NUM_ARGS(), "a|l", &array, &change_to_upper) == FAILURE) {
return;
} array_init_size(return_value, zend_hash_num_elements(Z_ARRVAL_P(array))); ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(array), num_key, string_key, entry) {
if (!string_key) { // 数组键值为数字索引,将数组元素更新到return_value
entry = zend_hash_index_update(Z_ARRVAL_P(return_value), num_key, entry);
} else { // 数组键值为字符串
// 字符串键值大小写转换
if (change_to_upper) {
new_key = php_string_toupper(string_key);
} else {
new_key = php_string_tolower(string_key);
}
// 将数组元素更新到return_value
entry = zend_hash_update(Z_ARRVAL_P(return_value), new_key, entry);
// 释放zend_string, 如果引用数位0,则释放内存。
zend_string_release(new_key);
}
// 增加引用
zval_add_ref(entry);
} ZEND_HASH_FOREACH_END();
}

最新文章

  1. javascript 原型及原型链的初步理解
  2. [每日电路图] 9、介绍一种低价简单的4.2V锂电池充电及稳压(LDO)电路——RT9193,SD8017
  3. ReactNative真机运行指南
  4. SaltStack安装篇
  5. Javaweb上下文监听者ServletContextListener
  6. C语言 百炼成钢17
  7. VLAN是什么
  8. js生成二维码参数设置
  9. d010: 分离自然数
  10. eclipse中配置免安装tomcat7
  11. Codeforces Round #503 (by SIS, Div. 2)
  12. VC++全屏
  13. ASP.NET Core免费(视频)教程汇总
  14. hdu 5311(暴力)
  15. 设置新时间校正服务器NTP SERVER
  16. java多线程实例
  17. java中==和equals和hashcode的区别详解
  18. LRU算法---缓存淘汰算法
  19. Linux下安装paramiko
  20. [剑指Offer] 9.变态跳台阶

热门文章

  1. kafka-manager怎么查看topic里的数据量
  2. [论文笔记] Improving Head Pose Estimation with a Combined Loss and Bounding Box Margin Adjustment
  3. kaptcha Spring 整合
  4. ugui点击穿透判断
  5. tensorflow学习之tf.placeholder
  6. Python中文件读写之 w+ 与 r+ 到底有啥区别?
  7. 20191118 Spring Boot官方文档学习(4.9)
  8. 20191127 Spring Boot官方文档学习(5)
  9. [Git] 024 log 命令的补充
  10. spring mvc + xmlHttpRequest2.0 实现无刷新上传文件,带进度条和剩余时间