我正在尝试在PHP中使用str_pad
array_map
。但它似乎无法正常工作。代码片段:
$arr = ["", "a", "ab", "abc", "abcd"];
$arr = array_map("str_pad", $arr, [4, "0", STR_PAD_LEFT]);
var_dump($arr);
结果是:
array(5) {
[0]=>
string(4) " "
[1]=>
string(1) "a"
[2]=>
string(2) "ab"
[3]=>
string(3) "abc"
[4]=>
string(4) "abcd"
}
我无法解释自己这种行为.. $arr[0]
被填充,但只是用空格而不是零而其他元素就像以前一样。
如何调整我的代码,以便返回如下内容:
array(5) {
[0]=>
string(4) "0000"
[1]=>
string(4) "000a"
[2]=>
string(4) "00ab"
[3]=>
string(4) "0abc"
[4]=>
string(4) "abcd"
}
答案 0 :(得分:1)
你去(working demo)
$arr = ["", "a", "ab", "abc", "abcd"];
$arr = array_map(function ($item) {
return str_pad($item, 4, "0", \STR_PAD_LEFT);
},
$arr
);
var_dump($arr);
您可以查看手册,详细了解array_map()的工作原理。基本上如果用多个数组调用它,在第一次调用时,函数的第一个参数将是第一个数组的第一个元素,第二个参数将是第二个数组的第一个元素,依此类推。