$items1 = ['apple', 'tree', 'juice'];
$items2 = ['apple', 'tree'];
$items3 = ['apple'];
// loop
If ($items[i].containsOnly['apple'])
{
// do something..
}
在上面的简化示例中,我想获取与给定项目匹配的数组。有没有类似于“ containsOnly”的方法?或最佳方法是什么?
答案 0 :(得分:4)
//If the array has the only item present
if(in_array('apple',$item) && count($item)==1)
{
//Do Something
}
答案 1 :(得分:3)
将您的逻辑与count
结合:
function containsOnly($a, $v)
{
return count($a) === 1 && array_values($a)[0] === $v;
}
这将确保您只有一项,并且其值等于要搜索的值。
注意:此处使用array_values
是为了重置所有索引,以便我们确保[0]
是该值所在。如果愿意,可以使用in_array
代替array_values
变种。
答案 2 :(得分:3)
您可以根据条件创建项目组->filter()
的集合,然后在通过条件的->each
项目组上运行代码。
$itemGroups[] = ['apple', 'tree', 'juice'];
$itemGroups[] = ['apple', 'tree'];
$itemGroups[] = ['apple'];
collect($itemGroups)
->filter(function($items, $key) {
return count($items) == 1 && in_array('apple', $items);
})
->each(function($items, $key) {
// do something
});
答案 3 :(得分:0)
您可以使用方法contains
。来自Laravel documentation:
$collection = collect(['name' => 'Desk', 'price' => 100]);
$collection->contains('Desk');
// true
$collection->contains('New York');
// false
我认为这个例子很简单。在您的示例中,它看起来像:
$collection = $items1->merge($items2)->merge($items3)
if($collection->contains('apple') && $collection->count() === 1){
// it contains apple
}
未经测试,但是您能从中得到启发。
答案 4 :(得分:0)
尝试一下:
$items=array_merge($items1,$items2,$items3);
if (in_array("apple", $items)){
echo "success";
}