在数字之间加 x

Add x in between the number

我有号码列表

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

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

1x112
1x113
1x114
1x115
1x120

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

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

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

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

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

<?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 

尝试像这样转换成数组。

<?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
        )

)

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

<?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