我有以下代码,它尝试按照创建日期对产品数组进行排序:
private function sortProductsByDate(Product $a, Product $b)
{
if ($a->getCreated() == $b->getCreated()) {
return 0;
}
return ($a->getCreated() < $b->getCreated()) ? -1 : 1;
}
/**
* Get the most 4 recent items
*
* @return \Doctrine\Common\Collections\Collection
*/
public function getMostRecentItems()
{
$userMostRecentItems = array();
$products = $this->getProducts();
usort($products, "sortProductsByDate");
foreach ($this->getProducts() as $product) {
ladybug_dump($product->getCreated());
}
$mostRecentItems = $this->products;
return $this->isLocked;
}
为什么这会给我这个错误:
Warning: usort() expects parameter 1 to be array, object given
想法?
答案 0 :(得分:3)
我猜测getProducts()
会返回\Doctrine\Common\Collections\Collection
(最有可能是ArrayCollection
)。使用
$products = $this->getProducts()->getValues();
您还想使用
usort($products, array($this, 'sortProductsByDate'));
最后,使用$products
foreach
数组
foreach ($products as $product)
答案 1 :(得分:0)
我认为错误很明显。它说第一个参数应该是数组,但你传递的是对象,这意味着$this->getProducts();
返回对象而不是数组。
试试看看变量产品的类型。我怀疑你在这里返回数据库资源而不是数组。
var_dump($products);