PHP - 从数组中删除相同的 sibling (叶)(从数组中删除相同的数组)

标签 php arrays

尝试从嵌套数组中删除相同的 sibling (叶子)/相同的数组。

例如

$data = [
        'test' => [
                'a' => [
                        'b' => 'something',
                        5 => [
                                'a' => [
                                        1 => 'test1',
                                        19 => 'test2',
                                        6 => 'test3',
                                ],
                                0 => 'test',
                        ],
                ],
                'b' => 1,
                2 => [
                        3 => 'something',
                        5 => 'somethingelse',
                ],
                4 => 'body'
        ],
        'anothertest' => [
                'b' => 1,
                0 => [
                        'test' => 1,
                        2 => 'something',
                        3 => 'somethingelse',
                ],
                1 => [
                        'test' => 1,
                        2 => 'something',
                        3 => 'somethingelse',
                ],
        ],
];

Array
(
    [test] => Array
        (
            [a] => Array
                (
                    [b] => something
                    [5] => Array
                        (
                            [a] => Array
                                (
                                    [1] => test1
                                    [19] => test2
                                    [6] => test3
                                )

                            [0] => test
                        )

                )

            [b] => 1
            [2] => Array
                (
                    [3] => something
                    [5] => somethingelse
                )

            [4] => body
        )

    [anothertest] => Array
        (
            [b] => 1
            [0] => Array
                (
                    [test] => 1
                    [2] => something
                    [3] => somethingelse
                )

            [1] => Array
                (
                    [test] => 1
                    [2] => something
                    [3] => somethingelse
                )

        )

)

$data['anothertest'][0] 和 $data['anothertest'][1] 是一样的,所以要去掉一个。

可以跳过带有字符串索引的数组。

增加了如何在 foreach 键值 block 中将一个数组与另一个数组进行比较。

我知道我可以使用 === 运算符比较同一个数组,但不知道如何在 foreach 循环中访问下一个数组。

这是我的代码,带有 PSUEDOCODE block ,我不知道该怎么做。

function cleansiblings($array)
  {
    foreach ($array as $key => $value) {
                if (!is_string($key)) {
                   //PSEUDO CODE 
                   //compare current $value to $value+1?? 
                }
    }

  }

感谢任何帮助。

谢谢,

最佳答案

你可以像这样从多维数组中删除重复项

<?php

function get_unique($array){
    $result = array_map("unserialize", array_unique(array_map("serialize", $array)));
    foreach ($result as $key => $value){
        if ( is_array($value) ){
            $result[$key] = get_unique($value);
        }
    }
    return $result;
}

echo "<pre/>";print_r(get_unique($data));

?>

输出:- https://eval.in/817099

关于PHP - 从数组中删除相同的 sibling (叶)(从数组中删除相同的数组),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44563194/

相关文章:

PHP 文件上传/move_uploaded_file 不工作

php - Woocommerce 新用户注册后更新用户元数据

php - 阻止页面加载

php - 我无法将 1.5MB 以上的图像上传到服务器上的目录

python - NumPy 数组的滚动/增加维数

arrays - MATLAB 在单元格数组中搜索

javascript - 如何在javascript中获取两个数组之间的差异?

php - 如何设置2个选择查询的限制?

ios - 在开关 block 中使用 objectAtIndex 方法

c - 指针到指针算术未按预期运行