网站地图    收藏   

主页 > 后端 > php资料库 >

PHP中array_keys,array_values函数使用基础教程_自学p

来源:自学PHP网    时间:2014-12-04 22:12 作者: 阅读:

[导读] array array_keys ( array input [, mixed search_value [, bool strict]] ) array_keys() 返回 input 数组中的数字或者字符串的键名。 如果指定了可选参数 search_value,则只返回该值的键名。否则 input 数组中的所...

array array_keys ( array input [, mixed search_value [, bool strict]] )

array_keys() 返回 input 数组中的数字或者字符串的键名。

如果指定了可选参数 search_value,则只返回该值的键名。否则 input 数组中的所有键名都会被返回。自 PHP 5 起,可以用 strict 参数来进行全等比较(===)。

array_keys 函数的实现在standard/array.c文件的2416行 PHP_FUNCTION(array_keys)

程序依照PHP一贯的风格,先判断输入是否正确,如果有第三个参数,则判断大小的函数使用is_identical_function(默认情况下是使用 is_equal_function函数)
然后初始化返回的数组,遍历所给的数组,取每个元素的key值,赋值给返回的数组,这个key值又分为数字和字符串两种,其中最主要的函数是hash操作函数zend_hash_get_current_key_ex(取当前元素的key值)
ZEND_API int zend_hash_get_current_key_ex(HashTable *ht, char **str_index, uint *str_length, ulong *num_index, zend_bool duplicate, HashPosition *pos)
{
Bucket *p;

p = pos ? (*pos) : ht->pInternalPointer;

IS_CONSISTENT(ht);

if (p) {
if (p->nKeyLength) { // 数字型的nKeyLength长度为0
if (duplicate) {
*str_index = estrndup(p->arKey, p->nKeyLength - 1);
} else {
*str_index = p->arKey; // /* arKey存储key名称(字符串类型的key)必须是最后一个成员,*/
}
if (str_length) {
*str_length = p->nKeyLength;
}
return HASH_KEY_IS_STRING;
} else {
*num_index = p->h; // 存储数字key值
return HASH_KEY_IS_LONG;
}
}
return HASH_KEY_NON_EXISTANT;
}

array array_values ( array input )

array_values() 返回 input 数组中所有的值并给其建立数字索引。
array_values 函数与array_keys的函数实现基本类似,并且还少了一个zend_hash_get_current_key_ex操作和判断值类型的操作,

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论