您的位置:首页 > 编程语言 > PHP开发

内核判断php数组索引是字符串还是数字

2015-04-30 15:55 351 查看
为了能在遍历时同时接收索引的值,就像PHP语言中这样的功能:

?
为了配合zend_hash_apply_with_arguments()函数,我们需要使其接受索引作为一个参数:

?
执行遍历:

?
这个函数通过C语言中的可变参数特性来接收参数。This particular example required no arguments to be passed; for information on extracting variable argument lists from va_list args, see the POSIX documentation pages for va_start(), va_arg(), and va_end().

当我们检查这个hash_key是字符串类型还是数字类型时,是通过nKeyLength属性来检测的,而不是arKey属性。这是因为内核有时候会留在arKey属性里些脏数据,但nKeyLength属性是安全的,可以安全的使用。甚至对于空字符串索引,它也照样能处理。比如:$foo[''] ="Bar";索引的值是NULL字符,但它的长度却是包括最后这个NULL字符的,所以为1。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  php 内核 hash