是否可以从数组元素的引用中获取对数组的引用


Is that possible to get the reference to an array from the referent of its element?

我目前有一个php函数,其中第一个参数是对数组的引用,第二个参数是它的键之一,

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

我想修改函数,这样我只需要传递一个参数$a[$k]。在函数内部,可以从$a[$k]中提取$a,然后我可以调用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) {
    ...
}

没有关于CCD_ 6来自哪里的信息传递给该函数。它可以是一个独立变量、一个数组元素($bar[1])、一个对象属性($baz->bingo)或其他任何东西(想想SomeClass::$bar->baz[$bingo->boingo])。没有办法告诉你。

要验证这一点,请在函数中尝试var_dump($ak);;它不会包含任何关于它所在的数组或对象(或其数组索引或属性名称)的信息。它和其他任何变量一样。