Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php中关联数组与简单数组的比较_Php_Associative Array - Fatal编程技术网

php中关联数组与简单数组的比较

php中关联数组与简单数组的比较,php,associative-array,Php,Associative Array,我有一个简单的会话数组,我将页面标题作为字符串推送到其中: $_SESSION['sesArray'][] = $pageTitle; 以及另一个预定义的关联数组,其中包含页面标题和链接: $assoc=array(array('title' => 'page title', 'link' => 'page link')); 会话数组中充斥着标题,因此我要删除重复的内容: $array1 = array_unique($_SESSION['sesArray']); 我的问题是:

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

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

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

尝试以下几点:

$ass = array_keys($assoc);

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

PHP关联其元组数组的方式允许您避免这个问题的难看的O(n^2)复杂性。

您并不是在真正进行区分,因为根据定义,数组数组与标量数组没有任何共同之处。您需要做的是根据
$array1
的内容过滤
$assoc
。试试这个:

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

请提供
$assoc
$array1
$result
的示例内容,以便我们可以看到哪些内容被删除了,哪些内容没有被删除。@dnagirl使用array_diff_键,我会得到一个$result,其中的条目在两个数组中都可以找到,而有些则没有:$array1=([1]=>Museum[2]=>Club)$assoc=数组([title]=>Museum[link]=>museum.php)数组([title]=>club[link]=>club.php),所以理想的$result只能是数组([title]=>Martin[link]=>Martin.php),但我得到了全部3个,我不知道为什么。我还有别的办法吗?谢谢,谢谢你的回答。我认为这可能是问题所在,所以我最终将两者都用作常规数组,在进行比较并消除重复项后,我在for循环中对其进行过滤,并通过关联添加链接。