使int1和int2成为int12

问题描述

| 我正在尝试使用ord()而不是自动将字符串自动转换为整数,例如(int),intval()或settype()。还有其他手动转换字符串的方法吗?
<?php
function first($string){
  for($i=0; $i!=strlen($string); $i++){
  if(ord($string[$i])===46){
    $stop=true;
  }
  if(!isset($stop)){
    $n=ord($string[$i]);
    if($n===48){$n=0;}
    elseif($n===49){$n=1;}
    elseif($n===50){$n=2;}
    elseif($n===51){$n=3;}
    elseif($n===52){$n=4;}
    elseif($n===53){$n=5;}
    elseif($n===54){$n=6;}
    elseif($n===55){$n=7;}
    elseif($n===56){$n=8;}
    elseif($n===57){$n=9;}
    else{ $n=0;}
    var_dump($n);
  }
}
}
first(\"12\"); // result = int(1) int(2),what i want is int(12)
?>
    

解决方法

范例1:
function first($string){
  return $string * 1;
  }
Example#2(数字的ASCII值的计算):
function first($string){
  $res = 0;
  $arr = array_reverse(str_split($string,1));
  $mult = 1; 
  foreach($arr as $digit) {
    if (ord($digit) > 47 && ord($digit) < 58) {
      $res += (ord($digit) - 48) * $mult;
      $mult *= 10;
      }
    elseif($digit == \'-\') $res *= -1;
    elseif($digit != \'+\') {
      $res = 0;
      $mult = 1;
      }
    }  
  return $res;
  }
用法:
var_dump(first(\'-123.534\')); // -123
var_dump(first(\'-1.3\'));     // -1
var_dump(first(\'-777\'));     // -777
var_dump(first(\'12334\'));    // 12345
var_dump(first(\'5.53\'));     // 5
var_dump(first(\'+64.02\'));   // 64
    ,您应使用与
$n
分开的
$sum
变量。 在您的“ 6”字块之前添加:
$sum = $sum * 10;
而不是
var_dump($n);
在那里累积中期结果:
$sum += $n;
然后添加
var_dump($sum);
作为函数中的最后一项。在
if
for
块之后。     ,我不知道您为什么要这样做,但是这里有一个示例,您可以怎么做。
<?php
function first($string){
  $n = 0;
  for($i=0; $i!=strlen($string); $i++){
    $n *= 10;
    $o=ord($string[$i]);
    if ($o >= 48 && $o <= 57) {
      $n += $o - 48;
    }
  }
  var_dump($n);
  return $n;
}
?>
    ,您能解释一下为什么要这样做吗?家庭作业?有很多方法可以做到这一点,而且我想不出比您更复杂(又慢)的方法。尝试以下方法之一:
function first($string) {
    return (int)$string;
}

function first($string) {
    return intval($string);
}

function first($string) {
    return $string * 1;
}

function first($string) {
    return $string + 0;
}

...
编辑:重新阅读您的问题,似乎可能有一个或多个
.
(ASCII代码46)在您的输入字符串中不是小数点,并且您想找出\“ first \”部分作为一个整数。在这种情况下,只需执行以下操作:
function first($string) {
    return (int)array_shift(explode(\'.\',$string));
}
    

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...