该$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”和“金字塔”)?
如果您只需要从 $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)