【问题标题】:Add x in between the number [closed]在数字之间添加 x [关闭]
【发布时间】:2020-01-13 10:34:40
【问题描述】:

我有数字列表

1112
1113
1114
1115
1116-1117
1118-1119
1120
1121-1122

需要像下面这样显示这些数字

1x112
1x113
1x114
1x115
1x120

这些数字以 - 爆炸并显示为

1x116
1x117
1x118
1x119
1x121
1x122

【问题讨论】:

  • 1112 可以转换为 1x112 如下:如果 $a = 1112 那么 $ax = substr(0,1,$a)."x".substr(1,strlen($a)- 1,$a);回声 $ax;
  • 到目前为止你尝试过什么?你被困在哪里了?
  • 你是什么意思,number explode with -
  • OP好像下线了。
  • 可能在列表中还有像 1116-1122 这样的表达式?

标签: php split explode implode


【解决方案1】:

尝试像这样转换成数组。

<?php 
$a = array();
$a[] = 1112;
$a[] = 1113;
$a[] = 1114;
$a[] = 1115;
$a[] = '1116-1117';
$a[] = '1118-1119';
$a[] = 1120;
$a[] = '1121-1122';

$output = array();
foreach($a as $key=>$value){
    if (strpos($value, '-') !== false) {
        $sub_a = explode('-',$value);
        foreach($sub_a as $sub_key=>$sub_value){
            $output[$key][$sub_key] = substr($sub_value, 0, 1).'x'.substr($sub_value, 1);       
        }
    }else{
        $output[$key] = substr($value, 0, 1).'x'.substr($value, 1);
    }
}
print_r($output);

输出

Array
(
    [0] => 1x112
    [1] => 1x113
    [2] => 1x114
    [3] => 1x115
    [4] => Array
        (
            [0] => 1x116
            [1] => 1x117
        )

    [5] => Array
        (
            [0] => 1x118
            [1] => 1x119
        )

    [6] => 1x120
    [7] => Array
        (
            [0] => 1x121
            [1] => 1x122
        )

)

【讨论】:

    【解决方案2】:

    将你的数字转换成字符串,然后你就可以操作它们了:

    $a = 1112;
    $a = (string) $a;
    var_dump(substr($a, 0, 1) . 'x' . substr($a, 1)); /* "1x112" */
    

    【讨论】:

      【解决方案3】:

      试试下面的代码。它对你有用。

      <?php
          $numStr = '1112 1113 1114 1115 1116-1117 1118-1119 1120 1121-1122';
          $numStr = explode(' ',str_replace('-',' ',$numStr));
      
          foreach($numStr as $key => $num) {
              $numStr[$key] = substr($num, 0, 1) . 'x' . substr($num, 1);
          }
      
          echo $numStr = implode(' ',$numStr);
      ?>
      

      输出

      1x112 1x113 1x114 1x115 1x116 1x117 1x118 1x119 1x120 1x121 1x122 
      

      【讨论】:

        【解决方案4】:

        拆分任何非数字,然后替换部分字符串:

        <?php
        $list = '1112 1113 1114 1115 1116-1117 1118-1119 1120 1121-1122';
        foreach(preg_split('/[^0-9]/', $list) as $number)
            echo substr_replace($number, 'x', 1, 0), "\n";
        

        输出:

        1x112
        1x113
        1x114
        1x115
        1x116
        1x117
        1x118
        1x119
        1x120
        1x121
        1x122
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-06-23
          • 2013-05-14
          • 1970-01-01
          • 2012-10-03
          相关资源
          最近更新 更多