• 技术文章 >后端开发 >PHP问题

    php如何删除多维数组

    藏色散人藏色散人2020-10-13 10:02:09原创77

    php删除多维数组的方法:首先创建一个PHP示例文件;然后通过unsetMultiKeys方法删除复杂的多维数组里面的指定键值对;最后查看运行结果即可。

    推荐:《PHP视频教程

    php删除多维数组里面的值

    在手册里面发现,改造后变成了一个函数,可以删除复杂的多维数组里面的制定键值对!

    <?php
    $arr = [
        'test' => 'value',
        'level_one' => [
            'level_two' => [
                'level_three' => [
                    'replace_this_array' => [
                        'special_key' => 'replacement_value',
                        'key_one' => 'testing',
                        'key_two' => 'value',
                        'four' => 'another value',
                    ],
                ],
                'ordinary_key' => 'value',
            ],
        ],
    ];
    $unset = array('special_key', 'ordinary_key', 'four');
    echo "<pre>";
    print_r(unsetMultiKeys($unset, $arr));
    print_r($arr);
    echo "</pre>";
    exit;
    function unsetMultiKeys($unset, $array) {
        $arrayIterator = new \RecursiveArrayIterator($array);
        $recursiveIterator = new \RecursiveIteratorIterator($arrayIterator, \RecursiveIteratorIterator::SELF_FIRST);
        foreach ($recursiveIterator as $key => $value) {
            foreach ($unset as $v) {
                if (is_array($value) && array_key_exists($v, $value)) {
                    // 删除不要的值
                    unset($value[$v]);
                    // Get the current depth and traverse back up the tree, saving the modifications
                    $currentDepth = $recursiveIterator->getDepth();
                    for ($subDepth = $currentDepth; $subDepth >= 0; $subDepth--) {
                        // Get the current level iterator
                        $subIterator = $recursiveIterator->getSubIterator($subDepth);
                        // If we are on the level we want to change, use the replacements ($value) other wise set the key to the parent iterators value
                        $subIterator->offsetSet($subIterator->key(), ($subDepth === $currentDepth ? $value : $recursiveIterator->getSubIterator(($subDepth + 1))->getArrayCopy()));
                    }
                }
            }
        }
        return $recursiveIterator->getArrayCopy();
    }

    运行结果:

    ae882ffd4c396033cd1faa0ebadad74.png

    改变多维数组里面的键值对

    以上就是php如何删除多维数组的详细内容,更多请关注php中文网其它相关文章!

    本文原创发布php中文网,转载请注明出处,感谢您的尊重!
    专题推荐:php
    上一篇:php修改语句怎么写 下一篇:php如何删除文本文件中的任意行
    第13期线上培训班

    相关文章推荐

    • php如何将多维数组转字符串• 总结PHP实现提取多维数组指定一列的方法• php怎么将字符串转多维数组• php中如何创建一个多维数组

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网