首页 > 代码库 > 深度解析PHP数组函数array_combine

深度解析PHP数组函数array_combine

前些天写了一篇关于array_merge的函数解析。

今天来看一个新的函数array_combine()

此函数一共有两个参数,一个是合并后数组的键名,另一个为键值。

注意:合并后数组的键名放在第一个参数位上,键值放在第二个参数位上。

   两个参数都是不可缺省的。

   两个参数数组的元素个数一定要相同否则会报错。

   如果其中任意一个参数数组为空同样也会报错。

 

实践出真知,让代码跑起来吧~

 

1.array_combine()的正确打开方式:

 1 <?php
 2 $key = array(‘boom‘ , ‘tom‘ , ‘jack‘);
 3 $values = array(‘12‘ , ‘ok‘ , ‘1017‘);
 4 $ret = array_combine($key , $values);
 5 print_r($ret);
 6 
 7 
 8 //run result
 9 
10 Array
11 (
12     [boom] => 12
13     [tom] => ok
14     [jack] => 1017
15 )

 

2.如果键名参数数组的元素相同时会是什么情况?

  根据下面的例子我们会发现如果出现相同元素时,后一个会覆盖掉前一个的值。

  在开发过程中这一点尤为重要,因为它会造成数据结果不完整的情况出现。

 1 <?php
 2 $key = array(‘boom‘ , ‘tom‘ , ‘tom‘);
 3 $values = array(‘12‘ , ‘ok‘ , ‘1017‘);
 4 $ret = array_combine($key , $values);
 5 print_r($ret);
 6 
 7 
 8 //run result
 9 Array
10 (
11     [boom] => 12
12     [tom] => 1017
13 )

 

根据上面的例子,我不经的想如果两个参数数组的元素有属于自己的键名会是什么样的情况呢?

 

3.当第一个参数数组(合并后数组的键名)有自定义键名时

 根据下面的记过我们会发现和示例1中的结果一样。

 1 <?php
 2 $key = array(‘a‘ => ‘boom‘ , ‘b‘ => ‘tom‘ , ‘c‘ => ‘jack‘);
 3 $values = array(‘12‘ , ‘ok‘ , ‘1017‘);
 4 $ret = array_combine($key , $values);
 5 print_r($ret);
 6 
 7 //run result
 8 
 9 Array
10 (
11     [boom] => 12
12     [tom] => ok
13     [jack] => 1017
14 )

 

4.当第二个参数数组(合并后数组的键值)有自定义键名时

 我们发现和之前的情况是一样的。

<?php
$key = array(‘boom‘ , ‘tom‘ , ‘jack‘);
$values = array(‘a‘ => ‘12‘ , ‘b‘ => ‘ok‘ , ‘c‘ => ‘1017‘);
$ret = array_combine($key , $values);
print_r($ret);

//run result

Array
(
    [boom] => 12
    [tom] => ok
    [jack] => 1017
)

 

5.当两个参数数组都拥有自定义键名时

<?php
$key = array(‘1‘ => ‘boom‘ , ‘2‘ => ‘tom‘ , ‘3‘ => ‘jack‘);
$values = array(‘a‘ => ‘12‘ , ‘b‘ => ‘ok‘ , ‘c‘ => ‘1017‘);
$ret = array_combine($key , $values);
print_r($ret);

//run result
Array
(
    [boom] => 12
    [tom] => ok
    [jack] => 1017
)

 

综上所述:array_combine()这个函数的结果只受参数数组键值的影响,与键名无关。

     再者,如果出现参数数组元素相同时会发生覆盖现象。

     

 

本文为茴香饺子博客的原创,欢迎转载,转载请注明出处  

茴香饺子博客http://www.cnblogs.com/hxjz/

 

深度解析PHP数组函数array_combine