我正在寻找一种过滤数组的方法,以便删除所有指定了key的元素。
这是我的意思的一个例子:
$x = array(
'a', // pass
'b::a', // pass
array('a'), // pass
array('a', 'b'), // pass
function() { // pass
return 'a';
},
'a' => 'b', // doesn't pass because key is specified
);
remove_elements_with_key_specified($x)
之后...
array(5) {
[0]=> string(1) "a"
[1]=> string(4) "b::a"
[2]=> array(1) { [0]=> string(1) "a" }
[3]=> array(2) { [0]=> string(1) "a" [1]=> string(1) "b" }
[4]=> object(Closure)#1 (0) { }
}
怎么做?如果简单检查密钥是字符串是最好的方法吗?
答案 0 :(得分:1)
is_int()
可行:
foreach($x as $k=>$v){
if(!is_int($k)){
unset($x[$k]);
}
}
来自docs:
<?php
if (is_int(23)) {
echo "is integer\n";
} else {
echo "is not an integer\n";
}
var_dump(is_int(23));
var_dump(is_int("23"));
var_dump(is_int(23.5));
var_dump(is_int(true));
?>
以上示例将输出:
is integer
bool(true)
bool(false)
bool(false)
bool(false)
答案 1 :(得分:1)
你的所有元素都有一个隐含的数字键,所以我想你想做的是:
foreach($x as $key => $value) {
if(!is_numeric($key) {
unset($x[$key]);
}
}
这应该有效。