所以我有一个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是否是一个字符串;然而,循环增加了代码的循环复杂性,所以我试图避免它们。
好吧,如果真的不想使用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));
});
CCD_ 5仍然像CCD_ 6那样进行循环;只是没有明确显示。
此外,正如mario所说,修改数据库查询将是一个比这更可取的做法。如果必须在PHP端执行此操作,那么foreach的效率会高得多。
演示