有人可以展示使用Doctrine\Common\Collections\ArrayCollection的forAll
方法吗?
答案 0 :(得分:12)
这很简单。您链接的类以下列方式实现forAll
方法:
foreach ($this->_elements as $key => $element) {
if ( ! $p($key, $element)) {
return false;
}
}
因此,基于此,您应该调用forAll
之类的:
$collection = ... #some data
$collection->forAll(function($key, $item){
// Your logic here, based on $key and $item
});
希望这有帮助......
Student
的对象,其中有OneToMany
个学生的分数。您想检查学生是否已通过所有他/她选出的科目
$student = ....
$allPassed = $student->getMarks()->forAll(function($key, $mark){
return $mark->getValue() != 'F';
});
$allPassed
如果所有商标都是' A' B',' C'或者' D'。即使其中一个是TRUE
,如果它是F
。
答案 1 :(得分:4)
我想强调,只要内部函数返回 false ,forAll方法就会退出。
以Perovic为例,假设$ student有10个分数,其中只有一个是'F'。
如果'F'标记是数组的第10个元素,则为该函数
$mark->getValue()
将被调用10次。
另一方面,如果'F'标记是数组的第一个元素,$mark->getValue()
将仅被调用一次,因为该函数立即返回false,并且forAll方法停止评估。