合併數組 array_combine 不同數目的元素 array_combine_ext


<?php

fun(1,2,3);


function fun($a,$b='',$c=''){

//$key = array('a','b','c','d');

$key = array('a','b');

$agvalue = func_get_args();

$agrs = array_combine_ext($key,$agvalue);

print_r($agrs);

}



/**

* 合併數組 array_combine 不同數目的元素

* @param $key array      

* @param $value array      

* @return $ret array      

*/

function array_combine_ext($key,$value) {

$ret = array();

if(is_array($key) && is_array($value)){

$c1 = count($key);

$c2 = count($value);

if($c1 == $c2){

$ret = @array_combine($key,$value);

}elseif($c1>$c2){

for($i=0;$i<$c1;$i++){

$v = ($i >= $c2)? 'null':$value[$i];

$ret[$key[$i]] = $v;

}

}else{

for($i=0;$i<$c2;$i++){

$k = ($i >= $c1)? 'key'.($i+1):$key[$i];

$ret[$k] = $value[$i];

}

}

}else{

$ret['key'] = $key;

$ret['value'] = $value;

}

return $ret;

}

function array_combine_ext2($key,$value) {

$ret = array();

if(is_array($key) && is_array($value)){

$c1 = count($key);

$c2 = count($value);

if($c1 == $c2){

$ret = @array_combine($key,$value);

}elseif($c1>$c2){

$tmp1 = $key;

$tmp = array_splice($key,$c2);

$ret = array_combine($key,$value);

for($i=$c2;$i<$c1;$i++){

$ret[$tmp1[$i]] = 'null';

}

}else{

$tmp1 = $value;

$tmp = @array_splice($value,$c1);

$ret = @array_combine($key,$value);

for($i=$c1;$i<$c2;$i++){

$ret['key'.$i] = $tmp1[$i];

}

}

}else{

$ret['key'] = $key;

$ret['value'] = $value;

}

return $ret;

}


?>


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章