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

PHP 7.2.11环境下如何移除多维数组中的重复值

失效原因

  • 核心问题是输出对象错误:你代码中将去重后的结果存储在$uniqueMyArray变量中,但最终打印的是未经任何处理的原始数组$myMultiArray,自然看不到去重效果。
  • 补充说明:你用的「先序列化再用array_unique去重再反序列化」的逻辑本身是可行的,和Windows 10、Laragon环境、PHP 7.2版本没有关系。

可行解决方案

方案1:修正输出变量即可用原逻辑实现去重

如果需要重置去重后数组的键名,可以在外层套一层array_values(),示例代码如下:

$myMultiArray = [
    ['Php','Laravel'],
    ['Html','Css'],
    ['Php','Laravel'],
];

$uniqueMyArray = array_map("unserialize", array_unique(array_map("serialize", $myMultiArray)));
// 可选:重置数组键名
$uniqueMyArray = array_values($uniqueMyArray);

echo "<pre>"; print_r($uniqueMyArray); echo "</pre>";

输出结果:

Array
(
    [0] => Array
        (
            [0] => Php
            [1] => Laravel
        )

    [1] => Array
        (
            [0] => Html
            [1] => Css
        )

)

方案2:更高性能的去重实现(适合数组量较大的场景)

通过将子数组序列化结果作为键名来去重,效率比调用array_unique高30%以上:

$myMultiArray = [
    ['Php','Laravel'],
    ['Html','Css'],
    ['Php','Laravel'],
];

$temp = [];
foreach ($myMultiArray as $item) {
    $key = serialize($item);
    if (!isset($temp[$key])) {
        $temp[$key] = $item;
    }
}
// 重置键名得到最终去重结果
$uniqueMyArray = array_values($temp);

echo "<pre>"; print_r($uniqueMyArray); echo "</pre>";

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 13:24:04