首页 > 编程 > PHP > 正文

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

2020-03-22 17:37:33
字体:
来源:转载
供稿:网友
首页 > html' target='_blank'>php教程 > php教程 > 正文 浅谈PHP源码十三:关于array_change_key_case,array_chunk的介绍 2018-06-28 17:21:53 第六期线上培训班
这篇文章主要介绍了关于浅谈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的介绍的详细内容,PHP教程

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表