比较对象集合中的对象类型属性

时间:2016-12-12 15:26:25

标签: php arrays object compare

我有以下$输入:

elements: array:2 [
    0 => Tournament { 
        id: 1
        amountStaking: Price { 
            value: 2500
            currency: "EUR"
        }
    }
    1 => Tournament { 
        id: 2
        amountStaking: Price { 
            value: 2500
            currency: "EUR"
        }
    }
]

我想要实现的是一个函数,它将返回一个对象或false,取决于"相等"每个$amountStaking的{​​{1}}属性。在之前的输入中,它应该返回" common"价格对象:

Tournament

但如果其中一个Price { value: 2500 currency: "EUR" } 值为" USD"例如,它应该返回$currency

1 个答案:

答案 0 :(得分:1)

ObjectContext.Translate<T>()

您遍历数组,直到一个条目与前一个条目不匹配。你立即返回false。如果它只是返回最后一个对象。

也许你应该

$last = null;
foreach ($elements as $e) {
  if ($last === null) {
    $last = e->amountStaking;
    continue;
  }
  if ($last->value != $e->value || $last->currence != $e->currency) {
    return false;
  }
  $last = e->amountStaking;
}

return $last;

使其成为一个新对象,以防您以后想要修改它。

根据要求&#34;价格不可知&#34;:

return clone $last;