返回父数组中的PHP数组变量名?

时间:2011-05-25 22:12:10

标签: php arrays variables

我在PHP中有一个数组数组,我想在容器数组中访问每个数组的变量名(作为字符串)。

有:

$container = array($array1, $array2, $array2);

需要:

foreach ($container as $anArray) {
    {...some other code...}
    echo variable_name($anArray);  // output: array1 array2 array3
}

我正在尝试运行foreach循环来输出每个数组的名称,其函数如下所示(在PHP手册中建议):

function vname(&$var, $scope=false, $prefix='unique', $suffix='value') {
    if($scope) $vals = $scope;
    else      $vals = $GLOBALS;
    $old = $var;
    $var = $new = $prefix.rand().$suffix;
    $vname = FALSE;
    foreach($vals as $key => $val) {
        if($val === $new) $vname = $key;
    }
    $var = $old;
    return $vname;
}

但是这个功能只能输出:anArray(x3)

我需要输出:array1 array2 array3

有什么建议吗?

3 个答案:

答案 0 :(得分:5)

无法从使用array1创建的数组中检索“名称”array2array3array($array1, $array2, $array3)。那些变量名称已经消失。

您可以将数组设为名称:
    array('array1' => $array1, 'array2' => $array2, 'array3' => $array3)
这方面的快捷方式是compact('array1', 'array2', 'array3')

答案 1 :(得分:1)

使原始数组成为一个关联数组:

$container = array(
  'array1' => $array1,
  'array2' => $array2,
  'array3' => $array3
);

然后打印出键:

foreach($container as $name => $anArray){
  echo $name; //output: array1 array2 array3
}

答案 2 :(得分:1)

  

我需要输出:array1 array2 array3

您无法在运行时获取变量名称。不要浪费你的时间。