为什么我的示例代码导致第一个字符串仍然有尾随空格?
$a=array('test_data_1 ','test_data_2');
array_walk($a, 'trim');
array_map('trim', $a);
foreach($a AS $b){
var_dump($b);
}
字符串(12)“test_data_1”字符串(11)“test_data_2”
为什么我的示例代码导致第一个字符串仍然有尾随空格?
$a=array('test_data_1 ','test_data_2');
array_walk($a, 'trim');
array_map('trim', $a);
foreach($a AS $b){
var_dump($b);
}
字符串(12)“test_data_1”字符串(11)“test_data_2”
首先, array_walk 对您的目的来说是错误的函数。
其次,array_map 不改变原始数组,而是返回映射后的数组。所以你需要的是:
$a = array_map('trim', $a);
要array_walk
修改数组中的项目(值),回调必须是一个函数,该函数通过引用获取其第一个参数并对其进行修改(这不是 plain 的情况trim
),因此您的代码将变为:
$a=array('test_data_1 ','test_data_2');
array_walk($a, function (&$value) { $value = trim($value); }); // by-reference modification
// (no array_map)
foreach($a AS $b){
var_dump($b);
}
或者,array_map
您必须使用返回值重新分配数组,因此您的代码将变为:
$a=array('test_data_1 ','test_data_2');
// (no array_walk)
$a = array_map('trim', $a); // array reassignment
foreach($a AS $b){
var_dump($b);
}
array_map 返回一个新数组,试试这个
$a=array('test_data_1 ','test_data_2');
array_walk($a, 'trim');
$a = array_map('trim', $a);
foreach($a AS $b){
var_dump($b);
}