各类知识收集,PHP技术分享与解决方案各类知识收集,PHP技术分享与解决方案各类知识收集,PHP技术分享与解决方案

Str Tom,为分享PHP技术和解决方案,贡献一份自己的力量!
QQ:420220301 微信/手机:150-3210-7690
当前位置:首页 > CMS教程 > PHP

浅谈PHP源码十三:关于array_change_key_case,array_chunk的介绍

管理员 2023-09-05
PHP
136

浅谈PHP源码十三:关于array_change_key_case,array_chunk的介绍

内容导读

收集整理的这篇技术教程文章主要介绍了浅谈PHP源码十三:关于array_change_key_case,array_chunk的介绍,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2684字,纯文字阅读大概需要4分钟

内容图文

这篇文章主要介绍了关于浅谈PHP源码十三:关于array_change_key_case,array_chunk的介绍,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下

浅谈PHP源码十三:关于array_change_key_case,array_chunk的介绍

array_change_key_case

(PHP 4 >= 4.2.0, PHP 5)
array_change_key_case — 返回字符串键名全为小写或大写的数组
说明

array array_change_key_case ( array input [, int case] )

array_change_key_case() 将 input 数组中的所有键名改为全小写或大写。改变是根据后一个选项 case 参数来进行的。可以在这里用两个常量,CASE_UPPER 和 CASE_LOWER。默认值是 CASE_LOWER。本函数不改变数字索引。
看到这个函数,觉得应该是遍历数组所在的hash table,然后将其对应的key值转换成大写或小写(如果是字符串弄的key值)
看完后有一些不同,程序是将每个数组元素的引用都有加一

array_chunk
(PHP 4 >= 4.2.0, PHP 5)
array_chunk — 将一个数组分割成多个
说明

array array_chunk ( array input, int size [, bool preserve_keys] )

array_chunk() 将一个数组分割成多个数组,其中每个数组的单元数目由 size 决定。最后一个数组的单元数目可能会少几个。得到的数组是一个多维数组中的单元,其索引从零开始。
将可选参数 preserve_keys 设为 TRUE,可以使 PHP 保留输入数组中原来的键名。如果你指定了 FALSE,那每个结果数组将用从零开始的新数字索引。默认值是 FALSE。

程序实现说明:

  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);    //    剩余的元素}

以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注PHP中文网!

相关推荐:

浅谈PHP源码十二:关于return_value 返回值

浅谈PHP源码十一:关于 array_key_exists,in_array的介绍

浅谈PHP源码十:关于array_keys,array_values函数

以上就是浅谈PHP源码十三:关于array_change_key_case,array_chunk的介绍的详细内容,更多请关注Gxl网其它相关文章!

内容总结

以上是为您收集整理的浅谈PHP源码十三:关于array_change_key_case,array_chunk的介绍全部内容,希望文章能够帮你解决浅谈PHP源码十三:关于array_change_key_case,array_chunk的介绍所遇到的程序开发问题。 如果觉得技术教程内容还不错,欢迎将网站推荐给程序员好友。

内容备注

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。


希望以上内容对你有所帮助!如果还有其他问题,请随时提问。 各类知识收集 拥有多年CMS企业建站经验,对 lecms, classcms, fastadmin, pbootcms, phpcms, eyoucms, yzmcms, PHP, xunruicms, jizhicms, dedecms, wordpress, hkcms, yzncms, 等各类cms的相互转化,程序开发,网站制作,bug修复,程序杀毒,插件定制都可以提供最佳解决方案。

相关推荐

扫码关注

qrcode

QQ交谈

回顶部