10

我想在同一个数组上运行 3 个本机函数trimstrtouppermysql_real_escape_string. 这可以做到吗?

像这样尝试将数组作为回调传递是行不通的:

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

虽然这很好用,因为它只使用一个本机函数作为回调:

$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);

或更早(在低于 5.3 的 PHP 版本中):

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