【问题标题】:Laravel - Check if value is present in arrayLaravel - 检查数组中是否存在值
【发布时间】:2020-08-03 10:37:14
【问题描述】:

为什么这段代码每次都返回 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(),但它给出的错误消息是该值必须是一个数组并且我传递了一个对象。

【问题讨论】:

  • 那么,您是否尝试过Collection 实例的contains() 方法? laravel.com/docs/7.x/collections#method-contains
  • 我做到了,伙计。 :)
  • @OlegNurutdinov 请详细说明答案,否则我必须接受另一个答案,因为它包含更多信息和示例。谢谢。
  • 已更新。应该比以前更好。

标签: arrays laravel collections contains


【解决方案1】:

你需要使用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

【讨论】:

    【解决方案2】:

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

    $licsowned->contains('lic100')
    

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

    【讨论】:

      猜你喜欢
      • 2016-05-10
      • 1970-01-01
      • 1970-01-01
      • 2017-11-05
      • 2012-06-29
      • 2016-06-22
      • 1970-01-01
      相关资源
      最近更新 更多