php – 将null作为array_keys第二个参数传递
发布时间:2020-12-13 17:22:20 所属栏目:PHP教程 来源:网络整理
导读:PHP文档声明 default value of array_keys second argument为NULL. 但是,当显式传递NULL时,array_keys似乎无法正常工作. 例: 码 $a = array(10='a',11='b',12='b',13='c',14='c',15='b');$keys = array_keys($a);var_dump($keys); //Output 0$keys = array_
PHP文档声明
default value of array_keys second argument为NULL.
但是,当显式传递NULL时,array_keys似乎无法正常工作. 例: 码 $a = array(10=>'a',11=>'b',12=>'b',13=>'c',14=>'c',15=>'b'); $keys = array_keys($a); var_dump($keys); //Output 0 $keys = array_keys($a,null); var_dump($keys); //Output 1 产量 array 0 => int 10 1 => int 11 2 => int 12 3 => int 13 4 => int 14 5 => int 15 array empty 题 我估计它必须试图找到值为null的键. 传递false或空字符串会产生完全相同的行为(显然). 那么,默认值是多少? 回答 xdazz answer is right.在检查这个函数的C代码时,我的第一个问题是这是C级的错误实现(通过删除代码很容易修复) 但后来我意识到这实际上是预期的行为,因为他们遇到了很多麻烦,使你能够测试数组中的NULL值. 解决方法
这里的默认值很难解释.
这是特例,第二个参数的默认值实际上不是php的NULL,而是C级的NULL. 深入了解源代码: PHP_FUNCTION(array_keys) { zval *input,/* Input array */ *search_value = NULL,/* Value to search for */ //.... if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,"a|zb",&input,&search_value,&strict) == FAILURE) { return; } // .... 您可以看到,search_value的默认值为NULL,但如果您指定了array_keys的第二个参数,则在zend_parse_parameters之后,search_value将不为NULL. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |