1

我有两个数组,如下所示,

$a =array(1,2,3,4);
$b =array(1,2,5,6);

这是我的代码

$c=array_diff($a,$b);
$c=array(3,4,5,6);

但我想要它像下面

$c=array(3,4);

笔记:

我想要$a数组中不存在的$b数组值。

4

4 回答 4

8

尝试这个

<?php
$array1 = array(1,2,3,4);
$array2 = array(1,2,5,6);
$result = array_diff($array1, $array2);

print_r($result);
?>

阅读此 PHp.NET for array_diff 并参考此FIDDLE

于 2013-08-08T06:29:22.430 回答
3

我知道array_diff这是最好的方法,但 dianuj 的回答不是很干净,评论可能没有很好地传达。

<?php

$a = array(1,2,3,4);
$b = array(1,2,5,6);

foreach($a as $k => $v)
{
    if (in_array($v, $b))
        unset($a[$k]);
}

var_dump($a);
于 2013-08-08T06:38:05.437 回答
2

如果您想在不维护旧键的情况下创建新数组,试试这个

$c = array_values(array_diff($a, $b));

这里的例子 - http://codepad.viper-7.com/bVaJG5

于 2013-08-08T06:43:56.420 回答
0

这应该为你做。

// get differences that in ary_1 but not in ary_2
foreach ( $ary_1 as $v1 ) {
    $flag = 0;
    foreach ( $ary_2 as $v2 ) {
        $flag |= ( $v1 == $v2 );
        if ( $flag ) break;
    }
    if ( !$flag ) array_push( $diff, $v1 );
}

在哪里 :

$ary_1 = $a & $ary_2 = $b
于 2013-08-08T06:49:21.043 回答