从逗号分隔列表中删除值与其他逗号分隔列表中的其他值

时间:2017-04-01 15:29:10

标签: php arrays string compare array-difference

如何从逗号分隔列表中删除其他值与其他逗号分隔列表中的值

我有这个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
)

1 个答案:

答案 0 :(得分:3)

首先,$users_list$users_list_2不是数组。它们是字符串。要制作' em阵列,您需要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);

简化的最终代码是:

explode

最后,如果使用var_dumparray_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); 删除它们,例如:

#include <stdio.h>

template <unsigned N>
__global__ void foo()
{
    printf("In kernel foo() with N = %u\n", N);
    if (N < 10) { return; }
    printf("Wow, N is really high!\n");
    /* a whole lot of code here which I don't want to indent */
}

int main() {
    foo<5><<<1,1>>>();
    foo<20><<<1,1>>>();
    return 0;
}