为什么我的示例代码会导致第一个字符串仍然有尾随空格?
$a=array('test_data_1 ','test_data_2');
array_walk($a, 'trim');
array_map('trim', $a);
foreach($a AS $b){
var_dump($b);
}
string(12)“test_data_1”string(11)“test_data_2”
答案 0 :(得分:46)
首先,array_walk根本不是你的目的。
其次,array_map不会更改原始数组,但会返回映射的数组。所以你需要的是:
$a = array_map('trim', $a);
答案 1 :(得分:3)
对于array_walk
修改数组中的项(值),回调必须是一个函数,它通过引用获取其第一个参数并对其进行修改(不是普通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);
}
答案 2 :(得分:0)
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);
}