ホームページ  >  記事  >  バックエンド開発  >  PHP ソース コードの簡単な説明 14: array_combine 関数について

PHP ソース コードの簡単な説明 14: array_combine 関数について

不言
不言オリジナル
2018-06-28 17:25:071607ブラウズ

この記事では主に PHP ソース コードに関する 14 番目の議論を紹介します。array_combine 関数については、必要な友人に参照してもらえるように共有します。 PHP ソース コードに関するディスカッション 4: array_combine 関数について

array_combine

(PHP 5)

array_combine — 配列を作成し、1 つの配列の値をそのキー名として使用し、別の配列の値をその値として使用します

説明

array array_combine (配列キー、配列値)

キー配列の値をキー名として使用し、配列を返します。対応する値として値配列の値を取得します。

2 つの配列内のセルの数が異なる場合、または配列が空の場合は 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 コードでは、キー配列に 2 つの配列が含まれている場合、後者の配列が前の配列を上書きします。つまり、キー配列には要素が 1 つだけ存在します。最後に、

は次のとおりです 表示された 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 中国語 Web サイトをご覧ください。

関連する推奨事項:

PHP ソース コードに関する簡単な説明 13: array_change_key_case、array_chunk の概要


簡単な説明PHP ソース コードについて 12: return_value について 戻り値


PHP ソース コードについての簡単な説明 11: array_key_exists について、in_array の概要

以上がPHP ソース コードの簡単な説明 14: array_combine 関数についての詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。