参考function foo()
{
$args = func_get_args();
for($i=0,$j=func_num_args();$i < $j;$i++)
{
$k = array_search($args[$i],$GLOBALS);
$r[$k ? $k : $i] = $args[$i];
}
return $r;
}
$a = 'test1';
$b = 'test2';
print_r(foo($a,$b,2,3));

解决方案 »

  1.   

    再说SEARCH整个$GLOBALS也太慢了点吧!
      

  2.   

    那就用array_keys,如果多个变量拥有相同值的话,很难定位,你编程时小心点咯.function foo()
    {
    $args = func_get_args();
    for($i=0,$j=func_num_args();$i < $j;$i++)
    {
    $k = array_keys($GLOBALS,$args[$i]);
    $r[$k ? $k[0] : $i] = $args[$i];
    }
    return $r;
    }
    $a = 'test1';
    $b = 'test2';
    print_r(foo($a,$b,2,3));
      

  3.   

    php的数组是一个hash表结构,其实应该是array_search效率还好点....
      

  4.   

    你可以把问题简单化一点
    已知变量$a = 10;
    可否定置个函数f,使得f(10) = 'a'?
      

  5.   

    function   foo(array $array) 

            print_r($array); 
    } $array = array(
      //这里想写什么写什么. 
    );不知道这样行不.
      

  6.   

    function foo()
    {
        $args = func_get_args();
        for($i=0,$j=func_num_args();$i < $j;$i++)
        {
                $k = array_keys($GLOBALS,$args[$i]);
                $r[$k ? $k[0] : $i] = $args[$i];
        }
        return $r;
    }
    $a = 'test1';
    $b = 'test2';
    print_r(foo($a,$b,2,3));