【问题标题】:how to compare two collections in laravel如何比较laravel中的两个集合
【发布时间】:2021-12-20 17:19:58
【问题描述】:

你好亲爱的堆栈溢出者,

我正在尝试将一个名为“text1”的集合与另一个集合“text2”进行比较。

我想实现它将“text1”和“text2”都具有的所有值放入另一个集合中。

我已经尝试过使用 Diff 和 DiffKeys(参见 compare two collection arrays in laravel)。

但我不能完全理解如何使用这些函数将 2 个集合的值相互比较。在我看来,这 2 个函数(Diff 和 DiffKeys)需要一个密钥,我还没有专门使用它来提取我的部分集合。

我的“text1”集合如下所示:

$text1 = collect('burger', 'cheese', 'bread', 'ham');

我的“text2”集合如下所示:

$text2 = collect('cheese', 'bread', 'tomato');

我想从中提取的是“text1”和“text2”中的所有值。 所以在这种情况下,它应该返回:

'cheese', 'bread'

(因为这些值都在'text1'和'text2'中)

有没有简单的方法来实现这一点?

非常感谢您帮助我。

问候

戴夫

【问题讨论】:

    标签: laravel collections compare


    【解决方案1】:

    您希望Collections 上的intersect 方法可用:

    $intersect = $text1->intersect($text2);
    
    $intersect->all(); // [1 => 'cheese', 2 => 'bread']
    

    【讨论】:

    • 这段代码非常好,谢谢!
    【解决方案2】:

    在这种情况下,您需要intersect 方法:

    intersect 方法从原始集合中删除给定数组或集合中不存在的任何值。生成的集合将保留原始集合的键:

    $text1Collection = collect('burger', 'cheese', 'bread', 'ham');
    $text2Collection = collect('cheese', 'bread', 'tomato');
    
    $resultCollection =$text1Collection->intersect($text2Collection);
    

    【讨论】:

    • 这段代码非常好,谢谢!
    • 请将任何答案标记为“已接受”,以便我们将此问题视为“已解决”
    猜你喜欢
    • 1970-01-01
    • 2021-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-17
    • 2018-04-11
    • 1970-01-01
    相关资源
    最近更新 更多