如何在PHP中使用array_map使用str_pad?

时间:2017-03-03 15:50:43

标签: php arrays array-map

我正在尝试在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"
}

1 个答案:

答案 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()的工作原理。基本上如果用多个数组调用它,在第一次调用时,函数的第一个参数将是第一个数组的第一个元素,第二个参数将是第二个数组的第一个元素,依此类推。