获取 Laravel 中两个数组之间的差异

Abd*_*kre 3 php laravel

$category变量将保存tags表中已经可用的值(即标签),或者用户可以在此变量中输入新标签,或两者兼而有之。

以下是带标签的查询,如果它们在tags表中可用:

$TagNames = DB::table('tags')
                    ->whereIn('t_name', $category)                  
                    ->pluck('t_name'); 
Run Code Online (Sandbox Code Playgroud)

TagNames 的输出:

array(2) { [0]=> string(7) "Zamalek" [1]=> string(4) "Ahly" }
Run Code Online (Sandbox Code Playgroud)

下面是$category保存所有标签的变量,无论它们是用户输入的新标签还是现有标签。

$category = $request->get('catBox');
Run Code Online (Sandbox Code Playgroud)

输出$category(带有两个额外的新标签):

array(4) { [0]=> string(7) "Zamalek" [1]=> string(4) "Ahly" [2]=> string(5) "Gouna" [3]=> string(8) "Pyramids" }
Run Code Online (Sandbox Code Playgroud)

问题是:如何比较两者arrays并在新数组中仅获得差异(即在这种情况下为“Gouna”和“金字塔”)?

liz*_*kya 6

如果您只需要从 $category 中检索差异。

您可以使用 PHP 内置函数array_diff()函数。

$differenceArray = array_diff($category, $TagNames);
Run Code Online (Sandbox Code Playgroud)

请记住,它不会显示 $TagNames 的差异。

要检索所有差异,您可以检索第一个差异和第二个差异并使用array_merge()函数将它们合并在一起。

$differenceArray1 = array_diff($category, $TagNames);
$differenceArray2 = array_diff($TagNames, $category);

$mergeDifference = array_merge($differenceArray1, $differenceArray2);
Run Code Online (Sandbox Code Playgroud)