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



我有以下$输入:

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

我要实现的是一个函数,该函数将根据每个Tournament$amountStaking属性的"平等"返回对象或false。在上一个输入中,它应返回"常见"价格对象:

Price { 
    value: 2500
    currency: "EUR"
}

但是,如果$currency值之一是" USD",则应返回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;

您穿过数组,直到一个条目与上一个条目不匹配。您立即返回false。如果它通过返回最后一个对象。

也许你应该

return clone $last;

使其成为一个新对象,以防稍后进行修改。


按照"价格不可知论"的要求:

$last = null;
foreach ($elements as $e) {
  if ($last === null) {
    $last = e->amountStaking;
    continue;
  }
  foreach ($last as $key => $val) {
    if (!property_exists($e, $key) || $last->$key != $e->$key) {
      return false;
    }
  }
  $last = e->amountStaking;
}
return $last;

相关内容

  • 没有找到相关文章

最新更新