PHP对象相关疑问:实现的salary函数是否正确?
你的salary函数实现有问题,我来帮你修正~
首先说结论:你当前的代码不正确,原因很简单——你把对象数组当成单个对象来调用方法了!
你写的$persons->pay();这里,$persons是一个对象数组,而不是单个具备pay方法的对象,直接对数组调用pay()会触发错误,因为PHP数组本身并没有这个方法。
正确的做法是遍历数组里的每一个对象,逐个调用它们的pay方法,再把结果存入results数组。修改后的代码如下:
function salary($persons) { $results = []; // 遍历数组中的每一个对象 foreach ($persons as $person) { // 调用当前对象的pay方法,将结果追加到results数组 $results[] = $person->pay(); } return $results; }
这样修改后,函数就能按照需求工作:接收对象数组,调用每个对象的pay方法,把所有结果收集到results数组里返回。
另外补充一点:题目里已经明确每个对象都有pay方法,所以不用额外处理对象不存在该方法的情况;如果数组为空,函数也会返回空数组,符合预期。
内容的提问来源于stack exchange,提问作者JustToKnow
相关产品推荐
相关产品推荐

