zoukankan      html  css  js  c++  java
  • 类型转换的判别

    PHP在变量定义中不需要(或不支持)明确的类型定义;变量类型是根据使用该变量的上下文所决定的。也就是说,

    如果把一个字符串值赋给变量var,var就成了一个字符串。如果又把一个整数值赋给var,那它就成了一个整数。

    PHP的自动类型转换的一个例子是加号“+”.如果任何一个操作数是浮点数,结果也是浮点数。否则操作数会被浮点数,结果也是浮点数。

    否则操作数会被解释为整数,结果也是整数。注意这并没有改变这些操作数本身的类型;改变的仅是这些操作数如何被求值以及表达式

    本身的类型。

    <?php

      $foo="0";//$foo 是字符串(ASCII 48)

      $foo+=2;//$foo现在是一个整数(2)

      $foo=$foo+1.3;//$foo 现在是一个浮点数(3.3)

      $foo=5+"10 Little Piggies";//$foo 是整数(15)

      $foo=5+"10 Small Pigs";

    ?>

    如果上面两个例子看上去古怪的话,参见字符串转换为数值.

    如果要强制将一个变量当作某种类型来求值,参见类型强制转换一节.如果要改变一个变量的类型,参见settype().

    如果想要测试本节中任何例子的话,可以用var_dump()函数.

    Note:

      自动转换为数组的行为目前没有定义.

      Also,because PHP supports indexing into strings via offsets using the same syntax as array indexing,the following

    example holds true for all PHP versions:

    <?php

      $a='car';//$a is a string

      $a[0]='b';

      echo $a;

    ?>

    请参阅访问和修改字符串中的字符一节以获取更多信息.

    类型强制转换

      PHP中的类型强制转换和C中的非常像;在要转换的变量之前加上用括号括起来的目标类型.

    <?php

      $foo=10;

      $bar=(boolean) $foo;

    ?>

    d
    允许的强制转换有:

    .(int),(integer)-转换为整型(integer)

    .(bool),(boolean)-转换为布尔型(boolean)

    .(float),(double),(real)-转换为浮点型(float)

    .(string)-转换为字符串(string)

    .(binary)-转换为二进制字符串(string)(PHP 6)

    .(array)-转换为数组(array)

    .(object)-转换为对象(object)

    .(unset)-转换为NULL(PHP 5)

    (binary)转换会在结果前面加上前缀'b',PHP 5.2.1新增.

    注意在括号内允许有空格和制表符,所以下面有两个例子功能相同:

    <?php

      $foo=(int) $bar;

      $foo=(int) $bar;

    ?>

    将字符串(string)文字和变量转换为二进制字符串(string):

    <?php

      $binary=(binary)$string;

      $binary=b"binary string";

    ?>

    Note:

    可以将变量放置在双引号的方式来代替将变量转换为字符串(string)s:

    <?php

      $foo=10;

      $str="$foo";

      $fst=(string)$foo;

      //输出"they are the same"

      if($fst==$str){

        echo "they are the same";

    }

    ?>

    有时在类型之间强制转换时确切地会发生什么可能不是很明显.更多信息如下小节:

  • 相关阅读:
    LeetCode 81 Search in Rotated Sorted Array II(循环有序数组中的查找问题)
    LeetCode 80 Remove Duplicates from Sorted Array II(移除数组中出现两次以上的元素)
    LeetCode 79 Word Search(单词查找)
    LeetCode 78 Subsets (所有子集)
    LeetCode 77 Combinations(排列组合)
    LeetCode 50 Pow(x, n) (实现幂运算)
    LeetCode 49 Group Anagrams(字符串分组)
    LeetCode 48 Rotate Image(2D图像旋转问题)
    LeetCode 47 Permutations II(全排列)
    LeetCode 46 Permutations(全排列问题)
  • 原文地址:https://www.cnblogs.com/vegas/p/5234625.html
Copyright © 2011-2022 走看看