组合和消除数组中的键值对

时间:2011-10-22 05:28:58

标签: php arrays unique

关于数组的PHP问题。假设我们有两个数组:

[first] => Array
    (
        [0] => users
        [1] => posts
        [2] => comments
    )

[second] => Array
    (
        [users] => the_users
        [posts] => the_posts
        [comments] => the_comments
        [options] => the_options
    )

如何比较这两个数组?意思是,在以某种方式组合它们之后,我们如何检查第一个数组中的值是否等于第二个数组中的键(array_flip?)(array_merge?)。无论哪个值/密钥对匹配,都要从数组中删除它们。

基本上,最终结果是两个数组合并,重复删除,唯一的索引是:

[third] => Array
    (
        [options] => the_options
    )

4 个答案:

答案 0 :(得分:3)

试试这个:

$third = array_diff_key($second,array_flip($first));

答案 1 :(得分:0)

可能有内置函数,但如果没有,请尝试:

$third = array();
foreach(array_keys($second) as $item)
  if(!in_array($item, $first))
    $third[$item] = $second[$item];

请注意,这假设$first没有$second中没有相应键的项目。为了解决这个问题,你可以有一个额外的循环(我不知道你会在$third为这些设置值,也许null

foreach($first as $item)
  if(!in_array($item, array_keys($second)))
    $third[$item] = null;

答案 2 :(得分:0)

这很简单,这种方式非常有效:

$third = $second;

foreach($first as $value)
{
    if (isset($third[$value]))
    {
      unset($third[$value]);
    }
}

答案 3 :(得分:0)

这是你问题的答案

$first= array
(
    "0" => "users",
    "1" => "posts",
    "2" => "comments"
);
$firstf=array_flip($first);
$second = array
(
    "users" => "the_users",
    "posts" => "the_posts",
    "comments" => "the_comments",
    "options" => "the_options"
);
$third=array_diff_key($second,$firstf);
print_r($third);