我有一个带有几个键的数组,我正在寻找一个回调来摆脱所有不符合某个标准的键(从'电子邮件'开始这种情况)。
我一直在关注array_walk()
,但无论如何,输出始终为1
。我猜这个功能不适合这个任务,所以有人知道更好的方法吗?感谢。
$test = array_walk($args, '_check_key_start_callback', 'email');
function _check_key_start_callback(&$value, $key, $str){
return strncmp($key, $str, strlen($str));
}
答案 0 :(得分:0)
您必须使用 array_map()而不是 array_walk() ......
答案 1 :(得分:0)
我会这样做,使用array_keys
和lambda函数:
$yourArray = array(
'email' => 'some@email.com',
'foo' => 'bar'
);
$allowedKey = "email";
$newArray = array_filter(array_keys($yourArray), function($key) use($yourArray, $allowedKey){
return strncmp($yourArray[$key], $allowedKey, strlen($allowedKey)) === 1;
});
无论如何,猪上的口红。
答案 2 :(得分:0)
这应该有效:
$args = array_intersect_key(
$args,
array_flip(array_filter(array_keys($args), function($key) {
return preg_match('/^email/', $key);
}))
);