You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从多维数组中找出重复值并生成对应索引映射数组

搞定多维数组重复值的索引映射需求

嘿,我来帮你解决这个问题!假设你手里有这么个多维数组:

Array (
    [0] => Array ( [0] => 71 [1] => 33 [2] => 46 )
    [1] => Array ( [0] => 71 )
    [4] => Array ( [0] => 71 [1] => 33 )
)

里面的71和33重复出现,现在要把每个重复值对应的原数组索引整理成映射数组,最终要得到这样的结果:

Array (
    [71] => Array ( [0] => 0 [1] => 1 [2] => 4 )
    [33] => Array ( [0] => 0 [1] => 4 )
)

实现思路&代码(以PHP为例)

思路其实很简单,就是两层遍历:先扫原数组的每个元素,记录它的索引;再扫每个子数组里的数值,把数值当键,原数组索引塞进对应的数组里就行。直接上代码:

<?php
// 你的原多维数组
$originalArray = [
    0 => [71, 33, 46],
    1 => [71],
    4 => [71, 33]
];

// 初始化结果数组
$indexMap = [];

// 第一层遍历:拿到原数组的索引和对应的子数组
foreach ($originalArray as $parentKey => $subArray) {
    // 第二层遍历:遍历子数组里的每个数值
    foreach ($subArray as $num) {
        // 如果结果里还没这个数值的键,先初始化空数组
        if (!isset($indexMap[$num])) {
            $indexMap[$num] = [];
        }
        // 把当前原数组索引加进去
        $indexMap[$num][] = $parentKey;
    }
}

// 打印看看结果
print_r($indexMap);
?>

运行这段代码,就能得到你想要的映射数组啦!如果还想过滤掉只出现一次的数值(比如例子里的46),再加个小过滤就行:

// 只保留出现多次的数值的索引数组
$indexMap = array_filter($indexMap, function($indices) {
    return count($indices) > 1;
});

内容的提问来源于stack exchange,提问作者Niranj Patel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 03:44:23