首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >数组几乎唯一的标准

数组几乎唯一的标准
EN

Stack Overflow用户
提问于 2012-02-21 12:31:17
回答 4查看 138关注 0票数 1

如何正确地使像这样的数组是唯一的?(说到唯一,我的意思是只删除array3,因为它是array2的副本)

代码语言:javascript
复制
array(
 array( "Title", 50, 96 ),
 array( "Other Title", 110, 225 ),
 array( "Title", 110, 225 ),
 array( "Title", 110, 225 ),
)

在这种情况下,我希望过滤掉的唯一数组是最后一个数组(在本例中),但没有特定的顺序,手工操作不会减少它。(弹出目标位置)。这是一个相当大的数组,我在这里也必须考虑性能。

我也可以这样安排数据:

代码语言:javascript
复制
array(
 array( "Title" => array( 50, 96 ), array(110, 225) )
 array( "Other Title", array( 110, 225 ) )
)

但这一次对我的事业没有帮助。

数组中没有唯一值(单独),但每个二级数组的值组合是唯一的。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-02-21 12:50:53

代码语言:javascript
复制
$array = array(array("Title", 50, 96), array("Other Title", 110, 225), array("Title", 110, 225), array("Title", 110, 225));

function remove_duplicates_multi_array($array) {

    $serialized_arrays = array();
    // serialize every array
    foreach ($array as $key=>$value) {
        $serialized_arrays[$key] = serialize($value);
    }
    // use array_unique to remove duplicates
    $unique_array = array_unique($serialized_arrays);

    $multi_unique = array();

    //unserialize every item inside the array
    foreach($unique_array as $key=>$value) {
        $multi_unique[$key] = unserialize($value);
    }

    return $multi_unique;
}

var_dump(remove_duplicates_multi_array($array));
票数 1
EN

Stack Overflow用户

发布于 2012-02-21 12:51:30

试试这个..。

代码语言:javascript
复制
$input = array_map("unserialize", array_unique(array_map("serialize", $input)));
票数 4
EN

Stack Overflow用户

发布于 2012-02-21 12:41:29

当然有人会用性能更好的解决方案击败我,但这是一个简单的解决方案。您所要做的就是“散列”原始数组,方法是将它们的所有元素连接起来,然后跟踪哪些元素已添加到唯一输入集中。仅当原始数组的“散列”(拼接值)尚未添加到散列数组中时,才能添加该数组。

代码语言:javascript
复制
$aMain = array(
 array( "Title", 50, 96 ),
 array( "Other Title", 110, 225 ),
 array( "Title", 110, 225 ),
 array( "Title", 110, 225 ),
);

$_aHashed = array();
$aUniqued = array();
foreach($aMain as $aUnhashed) {
    $sHash = implode('', $aUnhashed);
    if(!in_array($sHash, $_aHashed)) {
        $_aHashed[] = $sHash;
        $aUniqued[] = $aUnhashed;
    }
}

var_dump($aUniqued);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9372202

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档