从逗号分隔列表中删除值,从另一个逗号分隔列表中删除其他值



如何从逗号分隔列表中删除值 从另一个逗号分隔列表中删除其他值

我有这个 2 数组:

$users_list = '1, 2, 3';
$users_list_2  = '1, 2';

我想得到这个最终结果:

$final_users_list = '1,2';

我使用

$final_users_list = array_diff($users_list, $users_list_2);

但结果是空的

我遵循这个例子: http://php.net/manual/en/function.array-diff.php

$array1 = array("a" => "green", "red", "blue", "red");
$array2 = array("b" => "green", "yellow", "red");
$result = array_diff($array1, $array2);
print_r($result);
Array
(
[1] => blue
)

首先,$users_list$users_list_2不是数组。它们是字符串。要制作数组,您需要通过,explode这些字符串。

其次 - 要查找两个数组中存在的元素 - 使用array_intersect.

简化的最终代码是:

$users_list = '1, 2, 3';
$users_list_2  = '1, 2';
$final_users_list = array_intersect(
explode(',', $users_list), 
explode(',', $users_list_2)
);
echo'<pre>',print_r($final_users_list),'</pre>';
// or as a string 
echo implode(',', $final_users_list);

最后,如果您使用var_dumpexplode输出数组,您将看到该数组的值有空格。这些空格可能会影响进一步的比较,因此最好使用array_maptrim删除它们,例如:

$users_list = '1, 2, 3';
$users_list_array = array_map('trim', explode(',', $users_list));
$users_list_2  = '1, 2';
$users_list_2_array = array_map('trim', explode(',', $users_list_2));
$final_users_list = array_intersect($users_list_array, $users_list_2_array);
echo'<pre>',print_r($final_users_list),'</pre>';
echo implode(',', $final_users_list);

相关内容

  • 没有找到相关文章

最新更新