从另一个数组中排除一个数组

时间:2012-11-02 18:43:30

标签: php

我有这两个数组,它们有ID [3和4]为常用,ID [10]为差异。我只需要ID [10]

的项目
<?php

$usergroups = array();
$usergroups[] = array("id" => 3, "name" => "Parish 3");
$usergroups[] = array("id" => 4, "name" => "Parish 4");

$u= (object) $usergroups;
var_dump($u);


echo '<hr />';


$featuredgroups = array();
$featuredgroups [] = array("id" => 3, "name" => "Parish 3");
$featuredgroups [] = array("id" => 4, "name" => "Parish 4");
$featuredgroups [] = array("id" => 10, "name" => "Parish 10");

$fg = (object) $featuredgroups;
var_dump($fg);

  $filtered = array_diff($featuredgroups, $usergroups);
  var_dump($filtered); //returns empty result
?>

如何过滤掉用户的精选内容?我试过这个

$filtered = array();
foreach($u as $uu)
{
   $ug = (object) $uu;
   foreach($fg as $ff)
   {
      $fgr = (object) $ff;
      if($fgr->id != $ug->id)
         echo "<br>---".$fgr->name;  //am supposed to add this to filtered
   }
}

并打印出来

---Parish 4
---Parish 10
---Parish 3
---Parish 10

而不仅仅是'Parish 10',这是不同的。

更新

出于某种原因,答案中建议的array_diff不起作用。这仅适用于线性/ 1维阵列。我尝试使用多维数组,就像问题中的一个,它没有用

  $filtered = array_diff($featuredgroups, $usergroups);
  var_dump($filtered); //returns empty result

3 个答案:

答案 0 :(得分:3)

要获得两个数组的区别,可以使用array_diff。

http://php.net/manual/en/function.array-diff.php

$differences = array_diff($usergroups, $featuredgroups);

答案 1 :(得分:3)

您需要使用array_diff,这是manual

答案 2 :(得分:1)

我们来看两个阵列。

            $usergroups = array();
            $usergroups[] = array("id" => 3, "name" => "Parish 3");
            $usergroups[] = array("id" => 4, "name" => "Parish 4");

            $featuredgroups = array();
            $featuredgroups [] = array("id" => 3, "name" => "Parish 3");
            $featuredgroups [] = array("id" => 4, "name" => "Parish 4");
            $featuredgroups [] = array("id" => 10, "name" => "Parish 10");

现在,假设此id为唯一,我们可以检索数组中用户组中的所有id

foreach ($usergroups as $item => $value)
        {
            $c[] = $value['id'];
        }

此$ c数组将包含用户组中的所有id。现在我们都需要做的是,检查特征组中是否存在id;如果不存在,则检索这些值。可以通过以下方式将foreachin_array()组合使用来完成:

foreach ($featuredgroups as $item => $value)
            {
                if (!in_array($value['id'], $c))
                {
                    $d[] = $value;
                }
            }

完整代码:

foreach ($usergroups as $item => $value)
            {
                $c[] = $value['id'];
            }

foreach ($featuredgroups as $item => $value)
            {
                if (!in_array($value['id'], $c))
                {
                    $d[] = $value;
                }
            }

此处$d将检索所需的结果。