从数组中仅获取非数字键的简单方法

时间:2014-10-26 04:41:52

标签: php arrays

所以我有一个像这样的PHP数组:

Array
(
    [0] => Array
        (
            [offset] => 1
            [0] => 1
            [name] => Value:990937970
            [1] => Value:990937970
        )

    [1] => Array
        (
            [offset] => 2
            [0] => 2
            [name] => Value:482758260
            [1] => Value:482758260
        )

    [2] => Array
        (
            [offset] => 3
            [0] => 3
            [name] => Value:2045053536
            [1] => Value:2045053536
        )

)

但我想更改它,以便不返回数字键,如下所示:

Array
(
    [0] => Array
        (
            [offset] => 1
            [name] => Value:990937970
        )

    [1] => Array
        (
            [offset] => 2
            [name] => Value:482758260
        )

    [2] => Array
        (
            [offset] => 3
            [name] => Value:2045053536
        )

)

我的问题:是否有一种简单的方法(没有foreachwhile循环)来删除这些数字键?

我知道我可以做一个foreach我检查$ key是否为字符串;但是,循环会添加到我的代码cyclomatic complexity中,所以我试图避免它们。

1 个答案:

答案 0 :(得分:2)

好吧,如果你真的不想使用foreach,你可以这样做:

array_walk($data, function (&$v) {
    $keys = array_filter(array_keys($v), function($k) {return !is_int($k);});
    $v = array_intersect_key($v, array_flip($keys));
});

array_walk()仍然像foreach那样循环播放;它没有明确显示。

另外,正如马里奥所说,修改数据库查询将是一个非常推荐的行动方案。如果你必须在PHP方面这样做,foreach会更有效率。

Demo