>  기사  >  백엔드 개발  >  PHP 소스 코드 14에 대한 간략한 토론: array_combine 함수에 대하여

PHP 소스 코드 14에 대한 간략한 토론: array_combine 함수에 대하여

不言
不言원래의
2018-06-28 17:25:071618검색

이 기사에서는 주로 PHP 소스 코드에 대해 소개합니다. 14: array_combine 함수에 대해 특정 참조 값이 있습니다. 이제 공유합니다. 필요한 친구가 참조할 수 있습니다.

PHP 소스 코드에 대한 간략한 이야기 ​​14: About array_combine 함수

array_combine

(PHP 5)
array_combine — 한 배열의 값을 키 이름으로, 다른 배열의 값을 값
Description

array array_combine(배열 키, 배열 값)으로 사용하여 배열을 만듭니다.

배열을 반환하고, 키 배열의 값을 키 이름으로 사용하고, 값 배열의 값을 해당 값으로 사용합니다.
두 배열의 셀 수가 다르거나 배열이 비어 있으면 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 코드에서 키 배열에 두 개의 배열이 포함되어 있으면 후자의 배열이 앞쪽을 덮게 됩니다. 즉, 끝에는 하나의 요소만 있게 됩니다.

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 소스 코드에 대한 간략한 토론 13: array_change_key_case, array_chunk 소개

PHP 소스 코드에 대한 간략한 토론 12: return_value에 대해 반환 값

PHP에 대한 간략한 토론 소스 코드 11: array_key_exists 소개, in_array

위 내용은 PHP 소스 코드 14에 대한 간략한 토론: array_combine 함수에 대하여의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.