【问题标题】:Convert boolean to integer value php将布尔值转换为整数值php
【发布时间】:2013-12-03 04:05:01
【问题描述】:

是否有任何 PHP 的内置函数将采用布尔值并返回其等效整数? 0 为假,1 为真? 当然,您可以轻松地创建一个函数来执行此操作,我只是想问一下 PHP 内部是否有内置函数。我已经尝试过 intval() 并将其转换为 (int) 但它们不起作用,它们在 TRUE 和 FALSE 两种情况下都返回 0。

编辑:问题在于它不是真正的布尔值,它是一个字符串“false”,“true”,php 没有检测到它通过布尔值的 jquery 帖子。问题已解决,谢谢!

【问题讨论】:

  • 您确定您在布尔值上使用 intval(),而不是在包含“TRUE”或“FALSE”的字符串上?
  • echo (int)TRUE; - 如果这为你返回 0,那么你有一些非常非常糟糕的东西
  • 这个问题似乎离题了,因为 OP 已经确定问题是他们误读了数据类型

标签: php integer boolean type-conversion


【解决方案1】:

http://www.php.net/manual/en/language.types.integer.php

$myInt = (int)$myBoolean 应该可以工作

【讨论】:

    【解决方案2】:

    只需在变量前添加一个“+”,如下所示:

    $myBool = true; 
    
    var_dump(+$myBool);
    
    ouputs: int(1);
    

    【讨论】:

      【解决方案3】:
      // cast to Integer
      echo (int)true;         // 1
      echo (int)false;        // 0
      
      // get the integer value from argument
      echo intval(true);      // 1
      echo intval(false);     // 0
      
      // simply echoing true returns 1
      echo true;              // 1
      
      // you can even add those values
      echo true + true;       // 2
      

      【讨论】:

      • 虽然这确实说明了重点......添加一两句话来解释也没有什么坏处。
      • echo false; 不返回0
      • @FlashThunder 它没有
      【解决方案4】:

      如果您不确定数据类型,请参阅下面的示例,它适用于字符串、整数和布尔值。

      <?php
      
      $options = [ TRUE, FALSE, 'true', 'false', 1, 0, '1', '0', 'on', 'off', 'yes', 'no' ];
      
      foreach ( $options as $option ) {
          $bool = filter_var( $option, FILTER_VALIDATE_BOOLEAN ); // TRUE or FALSE
          print (int) $bool . ' '; // 1 or 0
      } 
      // Outputs: 1 0 1 0 1 0 1 0 1 0 1 0 
      
      ?>
      

      filter_var( $var, FILTER_VALIDATE_BOOLEAN ) 将返回 bool(true) 或 bool(false) 然后简单地转换为整数。

      filter_var()

      (PHP 5 >= 5.2.0,PHP 7)

      filter_var — 使用指定过滤器过滤变量

      【讨论】:

        【解决方案5】:

        如果您从 JSON I.E. 中获得价值通过 AJAX POST,该值将以字符串形式出现(如您所见)。解决此问题的一种方法是比较真/假字符串,然后将 bool 转换为 int

        $requestBool = $_REQUEST['bool_value']; //This is 'true' or 'false'
        
        $myInt = (int)($requestBool === 'true');
        echo $myInt;
        
        //returns: 0 or 1
        

        【讨论】:

        • 类似的方法:$myInt = ($requestBool === 'true') ? 1 : 0;
        • 您的回答非常简单,首先,要接收 JSON,应该解析 POST BODY(例如此处为 stackoverflow.com/a/8945912/340142)。第二个 JSON 本身可以保存值 truefalsenull。只是想看看自己在浏览器的控制台中运行它JSON.stringify({one:true, two:false,three:null})
        【解决方案6】:

        您可以一次进行多次投射:

        $isTest = 'true';
        
        (int)(bool)$isTest
        
        echo $isTest; // this outputs 1
        

        【讨论】:

        • 是的,但是 (int)(bool)'false' 也输出 1
        【解决方案7】:

        使用类型转换(bool):

        var_dump((bool) 1);         // bool(true)
        var_dump((bool) 0);         // bool(false)
        

        【讨论】:

        • 也许下次,尝试阅读这个问题 - OP 正在谈论相反的情况,将布尔值转换为整数,而不是将整数转换为布尔值
        • 他想要其他方式 bool > int
        猜你喜欢
        • 1970-01-01
        • 2014-09-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-10-22
        • 2019-09-12
        • 1970-01-01
        • 2017-05-04
        相关资源
        最近更新 更多