我有一个简单的会话数组,我在其中推送页面标题,如字符串:
$_SESSION['sesArray'][] = $pageTitle;
和另一个带有页面标题和链接的预定义关联数组:
$assoc=array(array('title' => 'page title', 'link' => 'page link'));
会话数组充满了标题,所以我正在重复:
$array1 = array_unique($_SESSION['sesArray']);
我的问题是:如何将$ assoc数组与$ array1进行比较,以检查两者中存在的页面标题并消除它们,最后是另一个包含唯一标题和链接的数组? 我尝试过使用:
$result= array_diff_key($assoc, $array1 );
但是有些重复的标题确实被删除了,有些则没有。
有什么想法吗?
ETA数据:
$array1= array('Museum', 'Club');
$assoc= array(array('title' => 'Museum', 'link' => 'museum.php' ),
array('title' => 'club', 'link' => 'club.php'));
答案 0 :(得分:1)
你并没有真正做差异,因为根据定义,数组数组与标量数组没有任何共同之处。您需要做的是根据$assoc
的内容过滤 $array1
。试试这个:
$array1= array('Museum','Club');
$assoc= array(array('title' => 'Museum', 'link' => 'museum.php' ),
array('title' => 'club', 'link' => 'club.php'));
$fn = function($arr) use ($array1) {
return !in_array($arr['title'], $array1);
};
$result =array_filter($assoc, $fn);
答案 1 :(得分:0)
啊,臭名昭着的技术访谈问题(“比较2个数组并查找常用条目”)。
尝试以下方面:
$ass = array_keys($assoc);
foreach($ass as $a)
{
while (isset($_SESSION['sesArray'][$a]))
{
unset($_SESSION['sesArray'][$a]);
}
}
PHP关联其元组数组的方式允许您避免此问题的丑陋O(n ^ 2)复杂性。