Вернуть имена переменных массива PHP, которые находятся внутри родительского массива? - PullRequest
0 голосов
/ 26 мая 2011

У меня есть массив массивов в 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)

Мне нужно вывести: массив1 массив2 массив3

Есть предложения?

Ответы [ 3 ]

5 голосов
/ 26 мая 2011

Невозможно получить «имена» array1, array2, array3 из массива, созданного с помощью array($array1, $array2, $array3).Эти имена переменных пропали.

Вы можете создать массив ключей имен, хотя:
array('array1' => $array1, 'array2' => $array2, 'array3' => $array3)
Сокращение для этого compact('array1', 'array2', 'array3').

1 голос
/ 26 мая 2011

Мне нужно вывести: массив1 массив2 массив3

Вы не можете получить имя переменной во время выполнения.Не трать свое время.

1 голос
/ 26 мая 2011

Сделать исходный массив ассоциативным массивом:

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

Затем просто распечатать ключи:

foreach($container as $name => $anArray){
  echo $name; //output: array1 array2 array3
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...