【问题标题】:Automatic conversion from int to string in PHPPHP中从int到string的自动转换
【发布时间】:2014-01-27 19:50:09
【问题描述】:

在 PHP 中,我有一个整数类型的变量。 当我将它传递给一个函数时,它被转换为一个字符串。 我用 var_dump 对其进行了测试。当我调用该函数时,它是一个整数。 函数调用后直接就是一个字符串。

代码:

public function setId($id)
{
    var_dump($id);
    // call of method "checkIfInteger" --> is_int($arg)
}

编辑:好的,伙计们,我明白了。在我的 setId 方法中,我有另一个检查方法来修剪参数 (&$id) - 例如,当我输入“ 10 ”时,之后我使用了一个(修剪过的)字符串。

另一个问题: 我使用 intval,但 intval('OK') 返回一个整数。 '25' 应该返回 true,25 也是,2.5 应该返回 false,并且 'ok' 也是。 有没有可用的功能?

【问题讨论】:

  • 好的,有什么问题?
  • 你能解释一下为什么会这样吗?
  • 取决于它周围的代码,你没有显示。我刚刚尝试了$t = 10; var_dump($t); function test($t) { var_dump($t); } test($t); 和两个状态 int(10),所以作为基本代码,没有强制转换。
  • 我也试过了,函数内的var_dump($id)对我来说仍然是一个整数。
  • @DachBoden 您展示的代码不会导致您展示的转换,因此您将不得不展示如何使用此代码来影响不同的变量类型。作为普通 PHP,该函数加上带数字的调用不会导致隐式类型转换

标签: php string function integer


【解决方案1】:

变量不会转换为字符串。快速检查:

<?php

function setId($id)
{
    var_dump($id);
    // call of method "checkIfInteger" --> is_int($arg)
}

$a = 1;

setId($a);

结果是:int(1)

你的 $id 来自哪里?怎么知道方法调用前是一个int?

【讨论】:

    【解决方案2】:
    //Where ever you wanted an integer, why not try this.?
    int $id = intval($id, 0);
    

    希望有帮助

    【讨论】:

      【解决方案3】:

      这取决于您如何将参数发送到您的函数...

      好像你是这样发送参数的......

      setId("1");// which will be a string ofcourse...
      

      尝试以setId(1); 发送,您将在var_dump 输出中获得整数。

      编辑:

      <?php
      $id=1;
      if(gettype($id)=="integer")
      {
          setId($id);
      }
      else
      {
          echo "Function will not be called because ID is not an integer!";
      }
      
      function setId($id)
      {
          var_dump($id);
      }
      

      【讨论】:

      • 也许这是可能的。我传递给函数的参数可以是字符串。我只需要一种方法来确保我的参数包含一个整数值。
      • @DachBoden,您可以使用gettype。请参阅编辑后的答案。试玩$id="1";,函数不会被调用。
      猜你喜欢
      • 1970-01-01
      • 2023-01-08
      • 2012-01-25
      • 2015-05-11
      • 2016-12-16
      • 2018-06-16
      • 1970-01-01
      • 2010-12-16
      • 2014-04-15
      相关资源
      最近更新 更多