如果小于10,强制将数字推入2位数格式的数组


Forcing to Push Number to Array in 2 Digits Format For Less than 10

你能看一下这个演示,让我知道我如何插入两位数格式(即使数字小于10)像01, 02, 03,..., 09到数组$days

$days = [];
for ($i = 1; $i <= 30; $i++) {
    array_push($days, $i);
} 
 echo '<pre>';
  print_r ($days);
 echo '</pre>';

输出看起来像

Array
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
    [4] => 5
    [5] => 6
    [6] => 7
    [7] => 8
    [8] => 9
    [9] => 10
    [10] => 11
    [11] => 12
    [12] => 13
    [13] => 14
    [14] => 15
    [15] => 16
    [16] => 17
    [17] => 18
    [18] => 19
    [19] => 20
    [20] => 21
    [21] => 22
    [22] => 23
    [23] => 24
    [24] => 25
    [25] => 26
    [26] => 27
    [27] => 28
    [28] => 29
    [29] => 30
)

但是我需要像

Array
(
    [0] => 01
    [1] => 02
    [2] => 03
    [3] => 04
    [4] => 05
    [5] => 06
    [6] => 07
    [7] => 08
    [8] => 09
    [9] => 10
    [10] => 11
    [11] => 12
    [12] => 13
    [13] => 14
    [14] => 15
    [15] => 16
    [16] => 17
    [17] => 18
    [18] => 19
    [19] => 20
    [20] => 21
    [21] => 22
    [22] => 23
    [23] => 24
    [24] => 25
    [25] => 26
    [26] => 27
    [27] => 28
    [28] => 29
    [29] => 30
)

您的代码将大致如下

function zero_prefix($num)
{
     if($num <= 9)
     {
         return '0'.$num;
     }
     return $num;
}
$days = [];
for ($i = 1; $i <= 30; $i++) {
    $proper_format_number = zero_prefix($i);
    array_push($days, $proper_format_number );
} 
echo '<pre>';
print_r ($days);
echo '</pre>';

结果在您想要的数组

您可以使用sprintf将其格式化为固定宽度字符串。%0指定符用于填充(默认的填充符是space),因此我们添加另一个0作为填充字符,并指定2的最小宽度。因此,对于小于10的数字,sprintf("%002s", $i)给出01 - 09 ( s是字符串格式说明符)。

$days = [];
for ($i = 1; $i <= 30; $i++) {
    $days[] = sprintf("%002s", $i);
} 
var_dump($days);

这给你。

<>之前数组(30){[0] =>字符串(2)"01"[1] =>字符串(2)"2"[2] =>字符串(2)"03"[3] =>字符串(2)"04"[4] =>字符串(2)"05"[5] =>字符串(2)"06"[6] =>字符串(2)"7"[7] =>字符串(2)"08"[8] =>字符串(2)"09"[9] =>字符串(2)"10"[10] =>字符串(2)"十一"[11] =>字符串(2)"12"[12] =>字符串(2)"13"[13] =>字符串(2)"14"[14] =>字符串(2)"15"[15] =>字符串(2)"16"[16] =>字符串(2)"17"[17] =>字符串(2)"18"[18] =>字符串(2)"19"[19] =>字符串(2)"20"[20] =>字符串(2)"21"[21] =>字符串(2)"22"[22] =>字符串(2)"23"[23] =>字符串(2)"24"[24] =>字符串(2)"25"[25] =>字符串(2)"26"[26] =>字符串(2)"27岁"[27] =>字符串(2)"28"[28] =>字符串(2)"29"[29] =>字符串(2)"30"}

嘿@Suffii只是创建一个条件,如果$i>10,那么只需将$i与0连接,如下所示:

<?php 
$days = [];
for ($i = 1; $i <= 30; $i++) {
    if($i<10){  
        $j=(0).($i);
    array_push($days,$j);
    }else{
    array_push($days,$i);
}
} 
 echo '<pre>';
  print_r ($days);
 echo '</pre>';
?>

这是一个工作的例子。

使用简单的array_map和str_pad

<?php
 $arr =range(1,30);
  $ss = array_map(function($item) {
     return str_pad($item, 2, '0', STR_PAD_LEFT); 

  }, $arr);
  print_r($ss);
输出:

   Array
   (
     [0] => 01
     [1] => 02
     [2] => 03
     ........
   )