PHP -- 数据类型

2019-06-28  本文已影响0人  潘肚饿兵哥哥

\color{rgba(254, 67, 101, .8)}{数据类型:}

 $x = 123; //这是十进制,输出显示:  123
$x = 0123; //这是八进制,输出显示:  83
   
进制换算:
个位*进制的0次方(任何数的0次方都是1) + 十位*进制的一次方 + 百位 * 进制的二次方

3 + 20 + 100 = 123   十进制
3 + 16 + 64 = 83   八进制
3 + 32 + 256 = 291  十六进制

echo PHP_INT_MAX;  输出最大值  2147483647
但是输出2147483648,他比最大值还要大,也同样能输出,虽然看起来是一个整数,但是2147483648这个数已经不是整型了,

 $a = 2147483648;
    echo gettype($a);  //获取类型
返回值:
double
这是一个浮点型
double是浮点型里的双精度
浮点型有单精度和双精度,在php里都叫浮点型

\color{rgba(254, 67, 101, .8)}{单精度是这样的格式,1位符号,8位指数,23位小数}

image.png

\color{rgba(254, 67, 101, .8)}{双精度是1位符号,11位指数,52位小数}

image.png

\color{rgba(254, 67, 101, .8)}{32位浮点数就是单精度}

\color{rgba(254, 67, 101, .8)}{64位浮点数就是双精度}

\color{rgba(254, 67, 101, .8)}{如果想用单引号套单引号,或双引号套双引号,就要用转义符号}

$str = 'Tom\'s Dog';
     echo  $str;
image.png

浏览器不认识\n换行,只认识
,出现\n浏览器会用空格代替。

 $str = "Tom's D\nog";
     echo $str;


$str = "Tom's D<br/>og";
     echo $str;

\n\t:

image.png

<br/>:

image.png

\color{rgba(254, 67, 101, .8)}{字符串:}
\color{rgba(254, 67, 101, .8)}{1. 单引号}
\color{rgba(254, 67, 101, .8)}{2.双引号:单双引号定义变量有区别}
\color{rgba(254, 67, 101, .8)}{3.heredoc: 相当于双引号,结束标记必须顶格写,且独占一行,后面除了分号,什么都不能写}
\color{rgba(254, 67, 101, .8)}{4.nowdoc:相当于单引号,跟heredoc一样的用法,只是在给第一个name加一个单引号(双引号也没有报错)}

单双引号:

$name = 'Tom';
     $str = "Hello$name";
     echo $str; 
image.png

如果是这样写:都用单引号的情况:

 $name = 'Tom';
     $str = 'Hel\nlo$name';
     echo $str; 

就不会解析,还是按照代码输出来:都用单引号的情况:
这里如果外面包裹的是双引号,\n就不会输出,而是显示空格


tom用双引号,hello用单引号也是不会解析:

$name = "Tom";
     $str = 'Hel\nlo$name';
     echo $str; 
image.png

但是如果tom用单引号,hello用双引号,又会被解析:

$name = 'Tom';
     $str = "He\nllo,$name";
     echo $str; 
image.png

\color{rgba(254, 67, 101, .8)}{单双引号总结:}
\color{rgba(254, 67, 101, .8)}{单引号:php不会读取里面的变量;作为纯字符串处理,读取速度快;}

\color{rgba(254, 67, 101, .8)}{双引号:php会尝试读取里面的变量(即使里面没有),这样读取速度慢;heredoc相当于双引号}

\color{rgba(254, 67, 101, .8)}{所以,如果有变量,就用双引号,没有变量,就用单引号,nowdoc相当于双单引号}

\color{rgba(254, 67, 101, .8)}{heredoc用法:}
\color{rgba(3, 101, 100, .8)}{如果要输出的是大段的带单双引号的字符串,用单引号和双引号都不行,就可以用下面这个方法:}

$str = <<<name
    code...
name;

//以<<<开头,name是自己取的名字,后面再跟自己取的名字表示代码段结束,后面跟的这个代码段名字要顶格写,最后分号
//如:
$str = <<< name
     <!DOCTYPE html>
<html>
<head>
    <title></title>
</head>
<body>
    <h1 class="h1">hello</h1>
    <h2 class="h2">hello</h2>
    <p class="text">hello</p>
</body>
</html>
name;
echo $str;
?>

nowdoc的用法,和heredoc相比只多了一个引号,其他的完全相同,显示出来的结果也一样。

heredoc:
$str = <<< name

name;

nowdoc:
$str = <<< 'name'

name;

\color{rgba(254, 67, 101, .8)}{布尔型:}

$bool = 7;
    if($bool){
        echo '真';
    }else{
        echo '假';
    }
php: bool为0和false时为假,0.0也是假,其他时候是真,00也是真,也不是假



javascript:
只有bool =true  和  1 时输出真,其他为假
<script type="text/javascript">
    var bool = 3;
    if(bool == true){
        alert("真");
    }else{
        alert("假");
    }
</script>


空字符串是假,其他时候都是真
  $bool = '';
    if($bool){
        echo '真';
    }else{
        echo '假';
    }


null也是假:
$bool = null;
    if($bool){
        echo '真';
    }else{
        echo '假';
    }

\color{rgba(254, 67, 101, .8)}{当转换为 boolean时,以下值被认为是 False:}

\color{rgba(254, 67, 101, .8)}{所有其它值都被认为是 True(包括任何资源和NAN) }

上一篇下一篇

猜你喜欢

热点阅读