0

我有一个带有几个键的数组,我正在寻找一个回调来摆脱所有不符合特定条件的键(在这种情况下以“电子邮件”开头)。

我一直在寻找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));

}
4

3 回答 3

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;

});

不管怎样,给猪涂口红。

于 2012-12-17T13:13:51.637 回答
0

你必须去array_map()而不是array_walk() ...

于 2012-12-17T13:02:45.123 回答
0

这应该有效:

$args = array_intersect_key(
    $args,
    array_flip(array_filter(array_keys($args), function($key) {
        return preg_match('/^email/', $key);
    }))
);
于 2013-03-14T21:52:22.350 回答