Laravel - Проверить, присутствует ли значение в массиве - PullRequest
0 голосов
/ 20 апреля 2020

Почему этот код возвращает false каждый раз?

$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 (), но он выдал сообщение об ошибке, что значение должно быть массивом, и я передал объект.

Ответы [ 2 ]

3 голосов
/ 20 апреля 2020

Вам необходимо использовать contains() метод Collection экземпляр.

Например:

$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 - содержит

3 голосов
/ 20 апреля 2020

Ваша переменная $licsowned является коллекцией. Вы можете использовать contains() метод. Пример:

$licsowned->contains('lic100')

Дополнительная информация о contains(): https://laravel.com/docs/7.x/collections#method - содержит

...