PHP array_map trim + 参数
PHP array_map trim + parameters
我将 array_map
用于 trim 我所有的数组值,但我需要传递第三个参数,因为我需要的不仅仅是 trim 空格,所以我传递了在第三个参数中。 基本上我想 trim 空格、单引号和双引号的所有数组值。
我有一个实用程序 class,我在其中创建了函数,它看起来像这样:
public function convertToArray($string, $trim = false) {
$split = explode(",", $string);
if($trim) {
$split = array_map("trim", $split, array(" '\""));
}
return $split;
}
但不知怎么的,我无法完成这项工作。即使我遵循 the answer here.
,我仍然可以在结果中看到双引号
我什至试过了
if($trim) {
$split = array_map("trim", $split);
$split = array_map("trim", $split, array("'"));
$split = array_map("trim", $split, array('"'));
}
但我仍然得到相同的结果。
array_map
接受一个只接受一个参数的函数。如果你想用 trim()
映射你的数组,后续参数不同于默认参数,你必须用匿名函数包装它:
$split = array_map(function($item) {
return trim($item, ' \'"');
}, $split);
我认为您需要为此使用匿名函数:)
$split = array_map(function ($value) {
return trim($value, " '\"");
}, $split);
正因为这与其他答案完全相同,所以这里有一个替代方案。如果这是您将在许多不同地方需要的操作,则此方法可能很有用 ;)
function trim_spaces_and_quotes($value) {
return trim($value, " '\"");
}
$split = array_map('trim_spaces_and_quotes', $split);
我会使用 array_walk
,您只需将额外的字符附加到现有的默认值(来自 the docs):
array_walk($string_arr_to_trim, function (&$v) {
$v = trim($v, " \t\n\r[=10=]\x0B'\"");
});
我将 array_map
用于 trim 我所有的数组值,但我需要传递第三个参数,因为我需要的不仅仅是 trim 空格,所以我传递了在第三个参数中。 基本上我想 trim 空格、单引号和双引号的所有数组值。
我有一个实用程序 class,我在其中创建了函数,它看起来像这样:
public function convertToArray($string, $trim = false) {
$split = explode(",", $string);
if($trim) {
$split = array_map("trim", $split, array(" '\""));
}
return $split;
}
但不知怎么的,我无法完成这项工作。即使我遵循 the answer here.
,我仍然可以在结果中看到双引号我什至试过了
if($trim) {
$split = array_map("trim", $split);
$split = array_map("trim", $split, array("'"));
$split = array_map("trim", $split, array('"'));
}
但我仍然得到相同的结果。
array_map
接受一个只接受一个参数的函数。如果你想用 trim()
映射你的数组,后续参数不同于默认参数,你必须用匿名函数包装它:
$split = array_map(function($item) {
return trim($item, ' \'"');
}, $split);
我认为您需要为此使用匿名函数:)
$split = array_map(function ($value) {
return trim($value, " '\"");
}, $split);
正因为这与其他答案完全相同,所以这里有一个替代方案。如果这是您将在许多不同地方需要的操作,则此方法可能很有用 ;)
function trim_spaces_and_quotes($value) {
return trim($value, " '\"");
}
$split = array_map('trim_spaces_and_quotes', $split);
我会使用 array_walk
,您只需将额外的字符附加到现有的默认值(来自 the docs):
array_walk($string_arr_to_trim, function (&$v) {
$v = trim($v, " \t\n\r[=10=]\x0B'\"");
});