网站地图    收藏   

主页 > 后端 > php资料库 >

PHP中array_combine函数使用基础教程_自学php网

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

[导读] array_combine (PHP 5) array_combine 创建一个数组,用一个数组的值作为其键名,另一个数组的值作为其值 说明 array array_combine ( array keys, array values ) 返回一个 array,用来自 keys 数组的值作为键...

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代码:

此代码会输出:
Array ( [1] => 33 [Array] => 66 )

EOF

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

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

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

添加评论