在我的第二个数组php中只显示值

时间:2013-02-05 16:17:26

标签: php arrays

我有两个我正在比较的数组。比较完美如下:

  $tmp = array_diff_key($arr1, $arr2);
  $echo $tmp;

但是,我只想显示阵列2中存在的数组1中不存在的值。

编辑:好的,谢谢大家的帮助。我怎么还是无法让它发挥作用。

我现在正在使用

   $tmp = array_diff($arr2, $arr1);
  var_dump($tmp);

打印出以下内容:

  array(1) { [0]=> array(3) { [0]=> string(4) "cars" [1]=> string(4) "vans" [2]=> string(6) "people" } }

所以,我会解释一下。

阵列1有汽车,面包车(这是从数据库中提取的)。

阵列2有汽车,人(这是从表格中输入的)。

我试图只显示数据库中没有的值,所以我认为$ tmp会回应人们,因为汽车在数据库中,而货车在$ arr1

我希望这清楚,因为它甚至让我感到困惑;)

如果我单独var_dump两个数组,我得到

    array(3) { [0]=> NULL [1]=> string(4) "cars" [2]=> string(4) "vans" } array(1) { [0]=> array(2) { [0]=> string(6) "people" [1]=> string(5) "tanks" } }

6 个答案:

答案 0 :(得分:2)

$tmp = array_diff_key($arr2, $arr1);
$echo $tmp;
我认为

echo $tmp只会输出'Array',因此您可能必须循环(可能使用foreach)来显示每个值,或使用var_dump

array_diff_key也可以使用键array_diff和值(您提到"值"在您的问题中)。

答案 1 :(得分:2)

使用array_intersectarray_intersect给出了两者中的值。

$tmp2 = array_intersect($arr1, $arr2);
var_dump($tmp2);

编辑:误读了这个问题。 array_diff将达到目的。 array_diff返回参数1中的值,这些值在其余参数中不存在。

$tmp2 = array_diff($arr2, $arr1);
var_dump($tmp2);

编辑:在您的情况下,您的$arr2内部有一个数组,其中包含值。因此,您需要array_diff($arr2[0], $arr1);

这是一个有效的fiddle

答案 2 :(得分:1)

你可以这样做:

foreach($tmp as $key=>$value) {
    if(isset($arr2[$key])) {
        echo $arr2[$key];
    }
}

答案 3 :(得分:1)

根据我对array_diff_key的理解,该函数返回一个数组,其中包含来自argument1的所有条目,其中的键不存在于任何其他数组中。所以只需将$arr2放入第一个参数中。

所以你的代码应该是:

$tmp = array_diff_key($arr2, $arr1);
$echo $tmp;

Source

答案 4 :(得分:1)

交换方向:

$tmp = array_diff_key($arr2, $arr1);
  $echo $tmp;

答案 5 :(得分:1)

如果您关注的是值而非关键值,那么您应该只使用array_diff()。您还需要反转参数中数组的顺序。最后回显一个数组不会显示你想要的,使用var_dump()。所以把它们放在一起:

$tmp = array_diff($arr2, $arr1);
var_dump($tmp);