0

いくつかのキーを持つ配列があります。特定の基準を満たさないすべてのキーを取り除くためのコールバックを探しています (この場合は「email」で始まります)。

私はこれを探してきましたが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

これはうまくいくはずです:

$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 に答える
0

array_keysラムダ関数を使用して、次のようにします。

$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_walk()の代わりにarray_map( ) を使用する必要があります ...

于 2012-12-17T13:02:45.123 に答える