【问题标题】:How to use str_pad using array_map in PHP?如何在 PHP 中通过 array_map 使用 str_pad?
【发布时间】:2017-03-03 15:50:43
【问题描述】:

我正在尝试在 PHP 中使用 str_padarray_map。但它似乎不起作用。一个代码-sn-p:

$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"
}

【问题讨论】:

  • 我之前已经回答过类似的问题:stackoverflow.com/questions/41286693/…
  • 为传入参数的每个数组中的每个元素运行回调函数。它将匹配""4"a"0"ab"STR_PAD_LEFT。我很确定这不是你想要的。

标签: php arrays array-map


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

【讨论】:

    猜你喜欢
    • 2017-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-08
    • 2016-01-06
    相关资源
    最近更新 更多