-1

我有一个简单的会话数组,我将页面标题作为字符串推送到其中:

$_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 );

但是确实删除了一些重复的标题,而有些则没有。

有任何想法吗?

预计到达时间数据:

$array1= array('Museum', 'Club'); 
$assoc= array(array('title' => 'Museum', 'link' => 'museum.php' ),
              array('title' => 'club', 'link' => 'club.php'));
4

2 回答 2

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);
于 2013-02-20T12:24:40.980 回答
0

啊,臭名昭著的技术面试问题(“比较 2 个数组并找到共同的条目”)。

尝试以下方式:

$ass = array_keys($assoc);

foreach($ass as $a)
{
   while (isset($_SESSION['sesArray'][$a]))
   {
     unset($_SESSION['sesArray'][$a]);
   }
}

PHP 关联其元组数组的方式允许您避免此问题的丑陋 O(n^2) 复杂性。

于 2013-02-19T18:05:10.403 回答