PHP: 如何通过子引用来遍历关联数组?
PHP: How to traverse an associative-array by having a child's reference?
我有一个这样的函数声明:
function func(&$array){//do something};
然后我有一个这样的数组:
$people[gender][singlePerson][property]=>value
我这样调用函数:
func($people[man][person1]);
在我的函数中,现在我的参数 $array 包含对以下内容的引用:
$people[man][person1]
现在问题...
我如何遍历引用来获取位置
$people[man]
换句话说,有引用 $people[man][person1]
如何在数组上连接 "level up"?
如果您将 $people['men']['person1']
传递给您的函数,则此函数无法知道此数组已嵌套在其外部的 $people['men']
中。
how can i "level up" on the array?
你不能。更重要的是:你不需要。
这里唯一合理的答案是:更改代码设计以满足您的要求,尝试不同的方法,考虑向该函数传递额外的参数等。
替代方法
你需要的是一个class而不只是一个函数;将此视为调用:
(new my_class($people))->func($people[man][person1]);
您将把整个数组传递给您的 my_class
实例,这样您就可以将其存储在变量中或将其作为引用传递。
你的 class 应该是这样的:
class my_class {
private $my_people;
public function __construct($outside_people) {
$this->my_people = $outside_people;
}
public function func($person){
.....
}
}
现在您可以从函数内部访问 $this->my_people
。
另一种替代方法
只需在第二个变量中传递数组。您需要通过引用传递它:
func($person, &$full_array){
....
}
然后像这样调用你的函数:
func($people[man][person1], $people);
由于 $full_array 是函数外部对 $people 的引用,您可以从函数内部修改原始数组。
我有一个这样的函数声明:
function func(&$array){//do something};
然后我有一个这样的数组:
$people[gender][singlePerson][property]=>value
我这样调用函数:
func($people[man][person1]);
在我的函数中,现在我的参数 $array 包含对以下内容的引用:
$people[man][person1]
现在问题... 我如何遍历引用来获取位置
$people[man]
换句话说,有引用 $people[man][person1]
如何在数组上连接 "level up"?
如果您将 $people['men']['person1']
传递给您的函数,则此函数无法知道此数组已嵌套在其外部的 $people['men']
中。
how can i "level up" on the array?
你不能。更重要的是:你不需要。
这里唯一合理的答案是:更改代码设计以满足您的要求,尝试不同的方法,考虑向该函数传递额外的参数等。
替代方法
你需要的是一个class而不只是一个函数;将此视为调用:
(new my_class($people))->func($people[man][person1]);
您将把整个数组传递给您的 my_class
实例,这样您就可以将其存储在变量中或将其作为引用传递。
你的 class 应该是这样的:
class my_class {
private $my_people;
public function __construct($outside_people) {
$this->my_people = $outside_people;
}
public function func($person){
.....
}
}
现在您可以从函数内部访问 $this->my_people
。
另一种替代方法
只需在第二个变量中传递数组。您需要通过引用传递它:
func($person, &$full_array){
....
}
然后像这样调用你的函数:
func($people[man][person1], $people);
由于 $full_array 是函数外部对 $people 的引用,您可以从函数内部修改原始数组。