使用PHP计算变量中的数字和字母数

时间:2017-06-29 05:20:08

标签: php count

我想用PHP计算变量中有多少个数字和字母。如果我的代码如下:

$lot_num = strtoupper('e1,1,2,3,4,5,7,8,9,10,11,12,13,14,15,16,17,18,e18');

echo 'END UNIT: '.substr_count($lot_num, 'E').'<br />';

代码将计算我的lot_num变量中有多少个字母E,但我还要计算变量中有多少个数字。假设在计算数字时不应包括E1和E18。

我希望你能帮助我们。

6 个答案:

答案 0 :(得分:2)

您可以随时将其转换为数组并使用循环:

$lot_num = explode(',',strtoupper('e1,1,2,3,4,5,7,8,9,10,11,12,13,14,15,16,17,18,e18');

$count = 0;
for ($i=0;$i<count($lot_num);$i++) {
    if (is_int($lot_num[$i])) { //detects all numbers
        $count++;
    }
}

echo $count;

答案 1 :(得分:2)

试试这个:在@Override public void onProgressChanged(SeekBar seekBar, int i, boolean b) { } @Override public void onStartTrackingTouch(SeekBar seekBar) { } @Override public void onStopTrackingTouch(SeekBar seekBar) { } 上爆炸以获取可以计算的数组。

https://3v4l.org/r6OKl

,

没有循环,没有正则表达式使它成为一个简单快速的解决方案。

答案 2 :(得分:2)

$lot_num = strtoupper('e1,1,2,3,4,5,7,8,9,10,11,12,13,14,15,16,17,18,e18');
$array  =   explode(',', $lot_num);
$data=array();
foreach($array as $k=>$val){    
    if(is_numeric($val )){      
        $data['number'][] = $val;
    }else{      
        $data['string'][] = $val;
    }


}
echo count($data['number']);
echo count($data['string']);

答案 3 :(得分:0)

我使用preg_match

    preg_match('/\b([0-9]+)\b/', $lot_num, $matches );

比赛就像这样。

      $mathes[1][1,2,3,4,5,7,8,9,10,11,12,13,14,15,16,17,18]

所以你会

     $lot_num = strtoupper('e1,1,2,3,4,5,7,8,9,10,11,12,13,14,15,16,17,18,e18');


     $total = 0;
     if( preg_match('/\b([0-9]+)\b/', $lot_num, $matches )){
        $total = count( $mathes[1] );
     }

您可以在此处查看Regx如何运作https://regex101.com/r/17psAQ/1

答案 4 :(得分:0)

您可以使用is_numeric()和

if (!preg_match("/^[a-zA-Z]$/", $param)) {
   // throw an Exception...
}

在循环中

答案 5 :(得分:0)

1,first u have to seperate the string and stored into  array
2,then u can easily count the value of integers
<?php
$lot_num =explode(',',strtoupper('e1,1,2,3,4,5,7,8,9,10,11,12,13,14,15,16,17,18,e18'));//seperate string by ","
$arr_count=count($lot_num);
for($i=0;$i<$arr_count;$i++)
{
$get_num[]=$lot_num[$i];//saving seperated string value into array
}
$count=0;
for($j=0;$j<count($get_num);$j++)
{
if(is_numeric($get_num[$j]))//chect whether the value is integer or not
{
    $count++;
}
}
echo $count;