Laravel - 检查值是否存在于数组中

Laravel - Check if value is present in array

为什么这段代码 return 每次都是错误的?

$lics = collect(['lic100' => auth()->user()->lic100, 'lic250' => auth()->user()->lic250, 'lic500' => auth()->user()->lic500]);
$licsowned = $lics->filter()->keys();
$haslicense = property_exists($licsowned, $data['lictype']);

$licsowned:

Illuminate\Support\Collection {#367 ▼
 #items: array:3 [▼
  0 => "lic100"
  1 => "lic250"
  2 => "lic500"
 ]
}

$data['lictype'] 的值为 lic250

我也试过 in_array() 但它给出了错误消息,指出值必须是一个数组,我传递了一个对象。

您的 $licsowned 变量是一个集合。您可以使用 contains() 方法。示例:

$licsowned->contains('lic100')

有关 contains() 的更多信息:https://laravel.com/docs/7.x/collections#method-contains

您需要使用 Collection 实例的 contains() 方法。

例如:

$collection = collect(['name' => 'Desk', 'price' => 100]);

$collection->contains('Desk');

或者,在您的任务中:

$lics = collect(['lic100' => auth()->user()->lic100, 'lic250' => auth()->user()->lic250, 'lic500' => auth()->user()->lic500]);

$lics->contains('lic250');

更多信息:

https://laravel.com/docs/7.x/collections#method-contains