首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >intval()似乎不能很好地处理shell中的信息(正常运行时间)

intval()似乎不能很好地处理shell中的信息(正常运行时间)
EN

Stack Overflow用户
提问于 2013-08-18 01:28:38
回答 2查看 99关注 0票数 0

我从这里得到值

代码语言:javascript
运行
复制
$uptime = explode(',', `uptime`);

$uptime[3]load average: 2.26

但是,intval($uptime[3]);返回0

我想这可能是因为小数位的原因,所以我也尝试了一下。

代码语言:javascript
运行
复制
$uptime_days = strpos($uptime[0], ' ');
$uptime_days_value = substr($uptime[0], $uptime_days + 9);
echo intval($uptime_days_value);

$uptime_days_value返回up 60 days,因此intval()应该返回60,但它返回0

EN

回答 2

Stack Overflow用户

发布于 2013-08-18 01:31:33

如果$uptime3为load average: 2.26,那么您将得到0返回,因为load average不是数字(整数或实数)

代码语言:javascript
运行
复制
$uptime[3] = 'load average: 2.26';
echo intval(explode(': ', $uptime[3])[1]);

如果$uptime_days_valueup 60 days,则intval()将返回0,因为up不是数字

代码语言:javascript
运行
复制
$uptime_days_value = 'up 60 days';
echo intval(explode(' ', $uptime_days_value)[1]);
票数 2
EN

Stack Overflow用户

发布于 2013-08-18 02:02:41

使用正则表达式

代码语言:javascript
运行
复制
<?php
   $string = "load average: 2.26";
   $expression = "/[0-9]+\\.*[0-9]*";

   $matches = array();
   if(preg_match($expression, $string, $matches) != 0) {
      print_r($matches);
   }
 ?>

如果有多个类型:#或具有任意位数的#.#,则应打印:

代码语言:javascript
运行
复制
 Array
 (
   [0] => "2.26"
 )

请注意,$matches是通过引用传递的,因此在函数调用中将替换$matches的现有值。

然后,要获取整数或浮点值:

代码语言:javascript
运行
复制
$number = intval($matches[0]);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18291518

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档