【问题标题】:PHP persistent variable type without the need of validation无需验证的 PHP 持久变量类型
【发布时间】:2014-09-06 14:57:23
【问题描述】:

我有一段时间一直在想这个问题。假设我们有一个变量: $foo = $_GET['value'];(这是一个通用的例子)

我想知道 PHP 是否有类似于 Lua 的东西,你可以有类似的东西:

local randomvar = "string";
local foo = randomvar or 0;

这样,foo 将被视为整数,如果 randomvar 不是整数,则将值 0 分配给它。

【问题讨论】:

  • 您对 Lua 的理解是错误的 (print(type( "orange" or 0)) --string),但幸运的是,这并没有阻止您在 PHP 中获得所需的内容。
  • @TomBlodget 我不是在标准 Lua 中编程,我编写的代码在我使用它的地方工作。我的错。

标签: php lua


【解决方案1】:

是的,有方法is_numeric

  <?
      $foo = "S"; 
      $bar = (is_numeric($foo)) ? $foo:0;
      echo $bar;
  ?>

请考虑为您的目的浏览文档http://php.net/manual/en/function.is-numeric.php

【讨论】:

  • 哈,我从来没有真正考虑过这样做。
  • $foo = "字符串"; $bar = is_int($foo) || 0; print_r($bar);
  • 我已经对代码进行了编辑。请检查这是否支持您的问题。
【解决方案2】:

你可以转换它的类型:

$foo = (int) $_GET['value'];

这不会将其设置为 0。但它肯定会删除非数字字符。

或者你可以使用 is_int():

function stringToZero($var) {
    return (is_int($_GET['value'])) ? $var : 0;
}

$temp = $_GET['value']; // because I'm not sure it's correct to send a $_GET to a function. might not be necessary.
$randomvar = stringToZero($temp);
unset($temp);

【讨论】:

  • 我已经在使用 (int),但我发现 Lua 方法更灵活,因为字符串上的 (int) 将返回 0,如果我想要 127 f.e.
  • 您可以将其更改为: function stringToZero($var,$int=0) { return (is_int($_GET['value'])) ? $var : $int; } 那么你可以调用 $randomvar = stringToZero($temp,127);
猜你喜欢
  • 1970-01-01
  • 2010-11-12
  • 2014-07-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-14
  • 1970-01-01
相关资源
最近更新 更多