0

私はこれらの2つのアレイを持っています、それらは共通として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

違いである「パリッシュ10」の代わりに。

アップデート

何らかの理由array_diffで、答えで示唆されているように機能しませんでした。これは、線形/1次元配列でのみ機能しました。問題のような多次元配列で試してみましたが、うまくいきませんでした

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

3 に答える 3

3

2 つの配列の差を取得するには、array_diff を使用できます。

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

$differences = array_diff($usergroups, $featuredgroups);
于 2012-11-02T18:46:55.337 に答える
3

を使用する必要がありますarray_diff。ここにマニュアルがあります

于 2012-11-02T18:47:24.837 に答える
1

2 つの配列を見てみましょう。

            $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が注目のグループに存在するかどうかを確認することです。存在しない場合は、それらの値を取得します。foreachこれは、とを組み合わせin_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は、目的の結果を取得します。

于 2012-11-03T07:43:38.537 に答える