Array_Map 使用多个本机回调?

发布于 2024-12-25 09:12:48 字数 460 浏览 2 评论 0原文

我想在同一个数组上运行 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')));

I want to run 3 native functions on the same array: trim, strtoupper and mysql_real_escape_string. Can this be done?

Trying to pass an array as a callback like this isn't working:

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

Although this works fine because it's only using one native function as the callback:

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

别想她 2025-01-01 09:12:48

你必须这样做:

$exclude = array_map(function($item) {
    return mysql_real_escape_string(strtoupper(trim($item)));
}, explode("\n", variable_get('gs_stats_filter', 'googlebot')));

You'll have to do it like this:

$exclude = array_map(function($item) {
    return mysql_real_escape_string(strtoupper(trim($item)));
}, explode("\n", variable_get('gs_stats_filter', 'googlebot')));
四叶草在未来唯美盛开 2025-01-01 09:12:48

你也可以做类似的事情:

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

或者其他事情。传入一个执行所有这些操作的匿名函数。

希望有帮助。

祝你好运 :)

You could also do something like:

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

or something. Pass in an anonymous function that does all that stuff.

Hope that helps.

Good luck :)

野心澎湃 2025-01-01 09:12:48

是的,只需将一个映射的结果传递到另一个映射:

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

Yes, just pass the result of one mapping into another:

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

You can also use a callback in PHP 5.3+:

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

or earlier (in versions of PHP lower than 5.3):

$result = array_map(
    create_function('$x','return mysql_real_escape_string(trim(strtoupper($x)));'),
    $your_array
);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文