Возможно ли получить ссылку на массив от референта его элемента?

0

В настоящее время у меня есть php-функция, в которой первый параметр является ссылкой на массив, а второй параметр является одним из его ключей,

function fun(&$a, $k) {
......
}

Я хочу изменить функцию так, чтобы мне просто нужно передать один параметр $a[$k]. Внутри функции $a можно извлечь из $a[$k] а затем я могу вызвать array_search($a[$k], $a) чтобы получить $k. Возможно ли это в PHP?

function fun(&$ak) {
// $ak is from $a[$k] 
// a php utility to extract $a from $ak? ...
$k = array_search($ak, $a);
}
Теги:
arrays

1 ответ

0
Лучший ответ

Короткий ответ: Нет, нет способа "извлечь" эту информацию, потому что эта информация не существует в рамках вашей функции.

Длительный ответ:

Как отмечают люди в комментариях, вы просто не можете этого сделать. Если у вас есть такая функция:

function fun(&$foo) {
    ...
}

нет информации, переданной этой функции о том, откуда пришел $foo. Это может быть автономная переменная, элемент массива ($bar[1]), свойство объекта ($baz->bingo) или что-то еще (подумайте, что SomeClass::$bar->baz[$bingo->boingo]), Невозможно сказать.

Чтобы проверить это, попробуйте var_dump($ak); в вашей функции; он не будет содержать никакой информации о том, какой массив или объект он (или его индекс массива или имя свойства). Это точно так же, как любая другая переменная.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню