10

同じ配列で 3 つのネイティブ関数を実行したい: trimstrtoupperおよびmysql_real_escape_string. これはできますか?

次のように配列をコールバックとして渡そうとしてもうまくいきません:

$exclude = array_map(array('trim','strtoupper','mysql_real_escape_string'), explode("\n", variable_get('gs_stats_filter', 'googlebot')));

コールバックとしてネイティブ関数を 1 つしか使用していないため、これは問題なく機能します。

$exclude = array_map('trim', explode("\n", variable_get('gs_stats_filter', 'googlebot')));
4

3 に答える 3

12

次のようにする必要があります。

$exclude = array_map(function($item) {
    return mysql_real_escape_string(strtoupper(trim($item)));
}, explode("\n", variable_get('gs_stats_filter', 'googlebot')));
于 2012-01-06T23:07:58.480 に答える
5

次のようなこともできます。

  $exclude = array_map(function($item) {
     return trim(strtoupper(mysql_real_escape_string($item)));
  }, explode(...));

か何か。そのすべてを行う無名関数を渡します。

それが役立つことを願っています。

幸運を :)

于 2012-01-06T23:08:41.033 に答える
5

はい、あるマッピングの結果を別のマッピングに渡すだけです。

$result = array_map(
    'mysql_real_escape_string',
    array_map(
        'trim',
        array_map(
            'strtoupper',
            $your_array
        )
    )
);

PHP 5.3 以降では、コールバックを使用することもできます。

$result = array_map(function($x){
    return mysql_real_escape_string(trim(strtoupper($x)));
}, $your_array);

以前 (PHP のバージョンが 5.3 より前の場合):

$result = array_map(
    create_function('$x','return mysql_real_escape_string(trim(strtoupper($x)));'),
    $your_array
);
于 2012-01-06T23:11:20.377 に答える