所以我有一个像这样的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
)
)
我的问题:是否有一种简单的方法(没有foreach
或while
循环)来删除这些数字键?
我知道我可以做一个foreach
我检查$ key是否为字符串;但是,循环会添加到我的代码cyclomatic complexity中,所以我试图避免它们。
答案 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会更有效率。