浅谈PHP源码十四:关于array_combine函数

浅谈PHP源码十四:关于array_combine函数

内容导读

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

内容图文

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

浅谈PHP源码十四: 关于array_combine函数

array_combine

(PHP 5)
array_combine — 创建一个数组,用一个数组的值作为其键名,另一个数组的值作为其值
说明

array array_combine ( array keys, array values )

返回一个 array,用来自 keys 数组的值作为键名,来自 values 数组的值作为相应的值。
如果两个数组的单元数不同或者数组为空时返回 FALSE。

程序实现说明:

 array_init(return_value);
zend_hash_internal_pointer_reset_ex(Z_ARRVAL_P(keys), &pos_keys); zend_hash_internal_pointer_reset_ex(Z_ARRVAL_P(values), &pos_values);

//

初始化数组指针,将其置为双向链接的头指针 while (zend_hash_get_current_data_ex(Z_ARRVAL_P(keys), (void **)&entry_keys, &pos_keys) == SUCCESS &&
 zend_hash_get_current_data_ex(Z_ARRVAL_P(values), (void **)&entry_values, &pos_values) == SUCCESS) {

//

同时遍历两个数组
if (Z_TYPE_PP(entry_keys) == IS_STRING) {

//

如果key值为字符串,以key
 zval_add_ref(entry_values);
 add_assoc_zval_ex(return_value, Z_STRVAL_PP(entry_keys), Z_STRLEN_PP(entry_keys)+1, *entry_values);
} else if (Z_TYPE_PP(entry_keys) == IS_LONG) {
 zval_add_ref(entry_values);
 add_index_zval(return_value, Z_LVAL_PP(entry_keys), *entry_values);
} else {
 zval key;
 key = **entry_keys;
 zval_copy_ctor(&key);
 convert_to_string(&key);

//

转化为字符串,如果为数组,则为Array
 zval_add_ref(entry_values);
 add_assoc_zval_ex(return_value, Z_STRVAL(key), Z_STRLEN(key)+1, *entry_values);
 zval_dtor(&key);
}
zend_hash_move_forward_ex(Z_ARRVAL_P(keys), &pos_keys);
zend_hash_move_forward_ex(Z_ARRVAL_P(values), &pos_values);

//

下一个元素,其实现为:pos_values = pos_values->pListNext;
}

在PHP代码中如果key数组中包含两个数组,则后面一个会覆盖前面,即最终只有一个元素,

如下所示PHP代码:

<?PHP$arr1 = array(1, array(1, 2), array(3, 4), array(5, 6));$arr2 = array(33, 44, 55, 66);$arr3 = array_combine($arr1, $arr2);print_r($arr3);die();

此代码会输出:

Array ( [1] => 33 [Array] => 66 )

EOF

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

相关推荐:

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

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

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

以上就是浅谈PHP源码十四: 关于array_combine函数的详细内容,更多请关注Gxl网其它相关文章!

内容总结

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

内容备注

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


本文关键词:

联系我们

在线咨询:点击这里给我发消息

邮件:w420220301@qq.com