Php 从数组中删除项的所有实例

Php 从数组中删除项的所有实例,php,arrays,Php,Arrays,我有一个数组,它可能有重复的值 $array1 = [value19, value16, value17, value16, value16] 我正在寻找一个高效的小PHP函数,它可以接受数组或字符串(无论哪个更容易) 并从array1中删除array2或string2中的每个项 此示例的正确输出为: $array1 = [value19] 对于那些对PHP更有经验的人来说,在PHP中是否有类似的功能 数组([0]=>19)要使字符串版本正常工作,请使用explode。 像这样: funct

我有一个数组,它可能有重复的值

$array1 = [value19, value16, value17, value16, value16]
我正在寻找一个高效的小PHP函数,它可以接受数组或字符串(无论哪个更容易)

并从array1中删除array2或string2中的每个项

此示例的正确输出为:

$array1 = [value19]
对于那些对PHP更有经验的人来说,在PHP中是否有类似的功能


数组([0]=>19)

要使字符串版本正常工作,请使用explode。 像这样:

function arraySubtract($one, $two) {
    // If string => convert to array
    $two = (is_string($two))? explode(' ',$two) : $two;
    $res = array();
    foreach (array_diff($one, $two) as $key => $val) {
        array_push($res, $val);
    }

    return $res;
}
此allso返回一个key=0…n且没有间隙的数组

用这个测试:

echo '<pre>';
print_r(arraySubtract(array(1,2,3,4,5,6,7), array(1,3,7)));
print_r(arraySubtract(array(1,2,3,4,5,6,7), "1 3 7"));
print_r(arraySubtract(array("val1","val2","val3","val4","val5","val6"), array("val1","val3","val6")));
print_r(arraySubtract(array("val1","val2","val3","val4","val5","val6"), "val1 val3 val6"));
echo '</pre>';
echo';
打印(数组子域(数组(1,2,3,4,5,6,7),数组(1,3,7));
打印(数组子目录(数组(1,2,3,4,5,6,7),“1,3,7”);
打印(数组子目录(数组(“val1”、“val2”、“val3”、“val4”、“val5”、“val6”)、数组(“val1”、“val3”、“val6”));
打印(数组子目录(数组(“val1”、“val2”、“val3”、“val4”、“val5”、“val6”)、“val1 val3 val6”);
回声';

我认为array_diff的问题在于,如果array2中的值在array1中不存在,它实际上会被添加,因为它正在进行差异。例如,在上面的数组中,array2包含值1,但array1甚至没有值1,因此无法删除,因为它根本不存在。你错了,数组_diff没有添加任何内容。试试看。
function arraySubtract($one, $two) {
    // If string => convert to array
    $two = (is_string($two))? explode(' ',$two) : $two;
    $res = array();
    foreach (array_diff($one, $two) as $key => $val) {
        array_push($res, $val);
    }

    return $res;
}
echo '<pre>';
print_r(arraySubtract(array(1,2,3,4,5,6,7), array(1,3,7)));
print_r(arraySubtract(array(1,2,3,4,5,6,7), "1 3 7"));
print_r(arraySubtract(array("val1","val2","val3","val4","val5","val6"), array("val1","val3","val6")));
print_r(arraySubtract(array("val1","val2","val3","val4","val5","val6"), "val1 val3 val6"));
echo '</pre>';