我想在同一个数组上运行3个本机函数:trim,strtoupper和mysql_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')));
答案 0 :(得分:11)
你必须这样做:
$exclude = array_map(function($item)
{
return mysql_real_escape_string(strtoupper(trim($item)));
}, explode("\n", variable_get('gs_stats_filter', 'googlebot')));
(此示例需要PHP 5.3+,因为它使用了匿名函数)
答案 1 :(得分:6)
是的,只需将一个映射的结果传递给另一个映射:
$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
);
答案 2 :(得分:5)
您还可以执行以下操作:
$exclude = array_map(function($item) {
return trim(strtoupper(mysql_real_escape_string($item)));
}, explode(...));
或者其他什么。传入一个完成所有这些工作的匿名函数。
希望有所帮助。
祝你好运:)