2017-12-14 4 views
-1

私はコード例があります。条件付きで文字列内の文字を計算するにはどうすればよいですか?

$str = '123456789101112131415'; 
    if(strlen($str) <9) 
    { 
    echo "the string is 10"; 
    } 
    elseif(strlen($str) > 9) { 
    echo 'the string is 11'; 
    } 
    elseif(strlen($str) > 21) { 
    echo 'the string is 30'; 
    } 
    elseif(strlen($str) > 31) { 
    echo 'the string is 40'; 
    } 

は私の問題は、どのように私はif条件

+0

'エコー 'の文字列は'。 strlen($ str); ' – miknik

+0

' echo '文字列は'です。 (strlen($ str) - strlen($ str)%10) ' – ewcz

+0

@miknik これはありがたいです 私はちょうど9時にもう一方の後にしたいです – examma

答えて

2

それを計算に指定した文字列が巨大なときに整理していないです!ここでは以下10

は、テストのバッテリーであれば10

  • チェックで乗算小数
  • を削除する10
  • コールfloor()によって

    1. コールstrlen()
    2. ディバイド:

      コード:(Demo

      $strings=[9=>'123456789',10=>'1234567890',11=>'12345678901',19=>'123456789',20=>'123456789',21=>'123456789']; 
      foreach($strings as $k=>$str){ 
          if(($group=floor(strlen($str)/10)*10)<10){ // use arithmetic to find the group, declare and check group in one step 
           echo "$k => $str is not upto 10"; 
          }else{ 
           echo "$k => $str is in group $group"; 
          } 
          echo "\n"; 
      } 
      

      出力:

      9 => 123456789 is not upto 10 
      10 => 1234567890 is in group 10 
      11 => 12345678901 is in group 10 
      19 => 123456789is in group 10 
      20 => 123456789is in group 20 
      21 => 123456789is in group 20 
      

      OPのアップデート後:

      コード:(Demo

      $strings=[9=>'123456789',10=>'1234567890',11=>'12345678901',19=>'123456789',20=>'123456789',21=>'123456789']; 
      foreach($strings as $k=>$str){ 
          echo "$k => $str is in group ",(floor(strlen($str)/10)+1)*10,"\n"; 
      } 
      

      出力:

      9 => 123456789 is in group 10 
      10 => 1234567890 is in group 20 
      11 => 12345678901 is in group 20 
      19 => 123456789is in group 20 
      20 => 123456789is in group 30 
      21 => 123456789is in group 30 
      

      ここでは、OPが求めている正確に何を提供する別の方法であるが、私はそれがいずれかの「権利はない」のです賭けます。

      http://sandbox.onlinephpfunctions.com/code/77effe7f68c389bafb1d104a49b7055873e7b038

  • +0

    私は本当にどのように私の質問を説明するが、私はちょうど欲しい if(strlen($ str)> 9){ echo 'the string is almost 20'; } elseif(strlen($ str)> 19){ echo '文字列はほぼ30'です。 } 文字列が予想よりも大きければ、私はまだこれを達成できますか? – examma

    +0

    質問を更新して、私が提供したテストケースの出力を正確に指定してください。デモリンクを参照することもできます。あなたの要件をよく理解すると、私は自分の答えを更新することができます。 – mickmackusa

    +0

    質問の更新は、決して '10'グループが存在しないことを意味します。それはあなたが欲しいものですか? 'upto'グループを「20歳未満」にしたいですか? – mickmackusa

    関連する問題