<?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; } ?>