【问题标题】:Get only the raw values of an array in Laravel Php after using array_diff()使用 array_diff() 后仅获取 Laravel Php 中数组的原始值
【发布时间】:2017-10-11 19:38:52
【问题描述】:

我正在使用 arra_diff() 删除任何匹配的元素。但返回的结果包含键和值。我只对值感兴趣,对键不感兴趣。

下面是输出:

array 1:
[5,7,11,14,15,22,23,24]

array 2:
[19,7]

Result (I dont like this):
{"0":5,"2":11,"3":14,"4":15,"5":22,"6":23,"7":24}

I need:
[5,11,14,15,22,23,24]

我的代码

$array_1 = query->get()->pluck('id')->toArray();
$array_2 = query->get()->pluck('id')->toArray();
$result  = array_diff($array_1, $array_2);
return $result

【问题讨论】:

    标签: php arrays laravel-5.4


    【解决方案1】:

    您可以使用 array_values 来获取它。试试这个,

    array_values($result);
    

    【讨论】:

      【解决方案2】:

      每个 laravel 查询都会返回一个 Laravel Collection

      正如 laravel 的 Documentation 所说,你有一个 diff 方法会有所帮助。

      diff 方法将集合与另一个集合或基于其值的普通 PHP 数组进行比较。此方法将返回给定集合中不存在的原始集合中的值。

      所以在你的情况下,你只需要这样做:

      $array_1 = $query->get()->pluck('id');
      $array_2 = $query->get()->pluck('id');
      $result  = $array_2->diff($array_1);
      return $result->values();
      

      结果我们将使用另一种方法values 来获取集合的值...

      【讨论】:

        猜你喜欢
        • 2022-01-26
        • 2018-10-31
        • 2015-06-24
        • 1970-01-01
        • 2021-03-05
        • 2018-03-15
        • 2015-09-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多