关于数组的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
)
答案 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);