В настоящее время у меня есть 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);
}
Короткий ответ: Нет, нет способа "извлечь" эту информацию, потому что эта информация не существует в рамках вашей функции.
Длительный ответ:
Как отмечают люди в комментариях, вы просто не можете этого сделать. Если у вас есть такая функция:
function fun(&$foo) {
...
}
нет информации, переданной этой функции о том, откуда пришел $foo
. Это может быть автономная переменная, элемент массива ($bar[1]
), свойство объекта ($baz->bingo
) или что-то еще (подумайте, что SomeClass::$bar->baz[$bingo->boingo]
), Невозможно сказать.
Чтобы проверить это, попробуйте var_dump($ak);
в вашей функции; он не будет содержать никакой информации о том, какой массив или объект он (или его индекс массива или имя свойства). Это точно так же, как любая другая переменная.