如何用密钥搜索集合项?

时间:2018-01-20 17:29:31

标签: php laravel

我收到了以下收藏:

$this->items = collect([$productId => [
                    'name' => $product->title,
                    'price' => $product->price,
                    'is_sale' => $product->is_sale,
                    'sale_price' => $product->sale_price,
                    'sale_percent' => $product->sale_percent,
                    'can_use_promocode' => $product->can_use_promocode,
                    'qty' => 1,
                ]);
]);

如何使用密钥搜索项目?在文档(https://laravel.com/docs/5.2/collections)中,我没有看到任何方法

UPD:例如,用户将一个项目添加到购物车($this->items)。我想检查购物车中物品的存在(需要用钥匙做)。模拟php函数array_key_exists,但是对于集合。

2 个答案:

答案 0 :(得分:5)

使用has()

if($this->items->has('key_name_to_check')){
    ///your task if exists
}

答案 1 :(得分:1)

你可以这样做:

$this->items->toArray()[$key]

或者您可以使用first()方法:

$this->items->first(function($i, $k) use($key) {
    return $key === $k;
});

<强>更新

如果您只是想知道集合中是否存在具有给定密钥的项目,则可以使用offsetExists()方法。

offsetExists()方法完全类似于array_key_exists(),因为它只是这样:

return array_key_exists($key, $this->items);