从另一个逗号分隔列表中的其他值中删除逗号分隔列表中的值
remove value(s) from a comma separated list from other value(s) from one other comma separated list
我如何从另一个逗号分隔列表中的其他值中删除逗号分隔列表中的值
我有这 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
这些字符串
其次 - 查找存在于 both 数组中的元素 - 使用 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_dump
从 explode
输出数组,您将看到此数组的值有空格。这些空格会影响进一步的比较,所以最好用array_map
和trim
去掉它们,例如:
$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);
我如何从另一个逗号分隔列表中的其他值中删除逗号分隔列表中的值
我有这 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
这些字符串
其次 - 查找存在于 both 数组中的元素 - 使用 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_dump
从 explode
输出数组,您将看到此数组的值有空格。这些空格会影响进一步的比较,所以最好用array_map
和trim
去掉它们,例如:
$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);