【问题标题】:How to get array keys starting with string in multidimensional array?如何在多维数组中获取以字符串开头的数组键?
【发布时间】:2021-09-27 11:09:15
【问题描述】:

我知道如何在单个数组中获取以特定字符串开头的所有数组键 >> How to get all keys from a array that start with a certain string?

但是多维数组的方法是什么? 例如,如何查找所有以 'foo-' 开头的键:

$arr = array('first-key' => 'first value'.
             'sceond-key' => 'second value',
             array('foo-1' => 'val',
                   'bar'=> 'value',
                   'foo-2' => 'val2')
             );

非常感谢,路易斯。

【问题讨论】:

    标签: php arrays multidimensional-array


    【解决方案1】:

    您仍然可以应用链接问题中的解决方案,但需要使用额外的外部过滤器。

    $outputArray = array_filter(
        $inputArray, 
        function ($element) {
            return ! is_array($element)
                || ! empty(
                       array_filter($element, function($key) {
                           return strpos($key, 'foo-') === 0;
                       }, ARRAY_FILTER_USE_KEY)
                   );
        }
    );
    

    有关工作代码,请参阅https://3v4l.org/NsgpR

    PHP 手册:is_array()

    【讨论】:

    • 谢谢杰弗里。我希望有一个不循环数组的解决方案。
    • @Louis__ 你能在外部数组中也有 'foo-' 键吗?
    • 不,它们只是内部数组的一部分。
    • 好的。预期的最终结果是什么:(1)以“foo”开头的字符串数组或(2)具有相同初始结构的数组,除了内部数组,键以“foo”开头的元素已被删除(还是保留)?
    • 如果内部数组不包含以'foo-'开头的键,我想删除外部数组的数组项...也许我应该重写我的代码。
    猜你喜欢
    • 1970-01-01
    • 2015-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-13
    • 2011-07-28
    • 1970-01-01
    相关资源
    最近更新 更多