【问题标题】:Php: Cannot seem to access array property in objectPHP:似乎无法访问对象中的数组属性
【发布时间】:2015-08-25 17:15:27
【问题描述】:

我有一个名为 Member 的类。我正在尝试添加一个多维数组作为这样的属性:

class Member {

public $name;
public $inheritingMembers;

public function __construct($name, $family) {
    $this->name = $name;
    $this->inheritingMembers = $this->findInheritingMembers($family, $name);
}

function findInheritingMembers($array, $keySearch) {
    foreach ($array as $key => $item){
        if ($key == $keySearch){
            return $item['children'];
        } else {
            if (is_array($item))
                $this->findInheritingMembers($item, $keySearch);
        }
    }
    return false;
}

}

函数“findInherititngMembers”返回一个多维数组,我可以使用 var_dump() 查看该数组。问题是,我似乎无法将此数组分配为成员对象的继承成员属性。

【问题讨论】:

  • return $this->findInheritingMembers($item, $keySearch);.
  • 数组返回正确。问题是将其分配给构造函数中的属性。
  • I tested this 看来您确实需要return $this->findInheritingMembers($item, $keySearch)。你是说它没有正确分配。创建新实例后,var_dump($this->inheritingMembers) 会给你什么?

标签: php arrays oop multidimensional-array


【解决方案1】:

我认为您需要在递归函数中再次返回:

function findInheritingMembers($array, $keySearch) {
    foreach ($array as $key => $item){
        if ($key == $keySearch){
            return $item['children'];
        } else {
            if (is_array($item))
                return $this->findInheritingMembers($item, $keySearch);
        }
    }
    return false;
}

【讨论】:

  • 数组返回正确。问题是将其分配给构造函数中的属性。
  • @OllyTenerife:是的,但是如果你更深一层(在 else 块中),你根本不会返回任何东西。这是期望的输出吗?你试过我的方法了吗?
  • 是的,我明白你的意思,如果它与第一个键不匹配,它会立即进入子数组更深一层,而不会遍历其他键。
猜你喜欢
  • 1970-01-01
  • 2018-11-12
  • 1970-01-01
  • 2021-08-23
  • 2017-09-04
  • 2020-05-04
  • 1970-01-01
  • 1970-01-01
  • 2017-10-17
相关资源
最近更新 更多