php - 比较 laravel 中的两个集合数组

标签 php arrays laravel

我正在使用 laravel,我有两个看起来像这样的集合数组:

$collection1 = [
    ['id' => 1, 'name'=> 'phone', 'quantity' => 1, 'price' => 1200],
    ['id' => 2, 'name'=> 'tv', 'quantity' => 3, 'price' => 800],
];

$collection2 = [
    ['id' => 1, 'name'=> 'phone', 'quantity' => 1, 'price' => 1200],
    ['id' => 2, 'name'=> 'tv', 'quantity' => 3, 'price' => 400],
];

所以我需要通过比较两个集合来知道它们是否相同。如果在某些数组中,其中一个键(或多个键)具有不同的值,则它们将不再是相同的集合,例如在 1 个集合中,第二个项目的价格为 800,另一个集合的 400。有任何 laravel 集合的 native 方法可以做到这一点?,或者我如何使用简单的 php 数组来做到这一点?

最佳答案

laravel 集合有一个名为 diff 的方法,使用这个方法你可以获取集合中给定项目中不存在的项目。这些项目是 $collection2 ,它可以是一个数组或一个集合,所以你可以像这样在这两个集合之间获取不同的项目

$collection1->diff($collection2);

它返回一个 Illuminate\Support\Enumerable 类。 你可以通过调用 all() 来获取这些项目:

$collection = collect([1, 2, 3, 4, 5]);

$differentItems = $collection->diff([2, 4, 6, 8]);

$differentItems->all();

// [1, 3, 5]

此代码属于 laravel 文档。 https://laravel.com/docs/7.x/collections#method-diff . 最后,您可以将 $differentItems 转换为 bool 值。像这样:

$collection = collect([1, 2, 3, 4, 5]);
$differentItems = $collection->diff([2, 4, 6, 8]);
$differentItems->isEmpty();
// return false

$collection = collect([1, 2, 3, 4, 5]);
$differentItems = $collection->diff($collection);
$differentItems->isEmpty();
// return true

更多链接 https://laravel.com/api/7.x/Illuminate/Support/Collection.html#method_diff https://laravel.com/api/7.x/Illuminate/Support/Enumerable.html

关于php - 比较 laravel 中的两个集合数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61069470/

相关文章:

PHP Eval 评估 HTML 和 PHP

Java:用逗号分隔并忽略标签 <p> 中的逗号

php - Redis 在 docker 中作为 WordPress 的 session 存储

php - Laravel 应用程序不并行处理请求

php - 如何从 php.net 获取最新的 php 版本信息

java - 如何将: (method Array) becomes original Array modified by method,和原来的Array变成(方法Array)

ios - 如何将空值传递给数组?

php - Laravel Passport 可以用于验证用户吗?

mysql - 使用 SQL Query 或 Laravel SQL Query Builder 创建表/列组合

javascript - Vue.js 在计算中获取 v-for 数组值