zoukankan      html  css  js  c++  java
  • PHP学习记录之数据类型

    <?php


    // 标量类型:String(字符串), Integer(整型), Float(浮点型), Boolean(布尔型)
    // Array(数组), Object(对象), NULL(空值),resource(资源类型)

    // String字符串
    echo "<br>==========================字符串==============================<br>";
    $a='hello word';
    echo $a;
    echo "<br>a的值是:".$a; //a的值是:hello word
    echo "<br>a的值是:$a"; //a的值是:hello word
    echo '<br>a的值是:$a'; //a的值是:$a, 单引号里不识别 $
    echo "<br>$a的值是:$a"; //error,会把 a的值是:当成变量名
    echo "<br>$a的值是:$a"; //$a的值是:hello word, 转义


    //整型
    echo "<br>==========================整型==============================<br>";
    $a=123;
    var_dump($a);
    echo "<br>";
    $a=-123;
    var_dump($a);
    echo "<br>";
    $a=0x2B;
    var_dump($a);
    echo "<br>";
    $a=045;
    var_dump($a);
    echo "<br>";
    // var_dump() 方法,判断一个变量的类型与长度,并输出变量的数值,如果变量有值,则输出是变量的值,并返回数据类型。显示关于一个或多个表达式的结构信息,包括表达式的类型与值。数组将递归展开值,通过缩进显示其结构。
    //进制之间相互转换
    echo "<br>==========================进制转换==============================<br>";
    $n = 123;
    $v1 = decbin($n);
    echo '<br>v1='.$v1; //v1=1111011
    $v2 = decoct($n);
    echo '<br>v2='.$v2; //v2=173
    $v3 = dechex($n);
    echo '<br>v3='.$v3; //v3=7b
    $v4 = bindec($v1);
    echo '<br>v4='.$v4; //123
    $v5 = octdec($v2);
    $v6 = hexdec($v3);

    $a=157;
    $aa=octdec($a);
    //注意:本来$a是十进制的157,用了octdec后就把$a当成八进制了
    echo "<br>aa=".$aa; // 111

    //浮点数
    echo "<br>==========================浮点数==============================<br>";
    echo "<br>";
    $a=1.212;
    var_dump($a);
    echo "<br>";
    $a=1.2e4;
    var_dump($a);
    echo "<br>";
    $a=12e3;//这也是浮点数,虽然结果是整数

    //浮点数不要随便做相等比较==,需要在精度内转换为整数再比较大小,此时在精度范围内我们认为是相等的。
    $a1=0.1;
    $a2=0.2;
    $a3=0.3;

    if ($v3==$v1+$v2) {
    echo "相等";
    }else{
    echo "不相等"; //输出
    }
    // 精确到小数点后4位
    if (round($v3+10000)==round($v1+$v2)*10000){
    echo "相等"; // 输出
    }else{
    echo "不相等";
    }


    //布尔值boolean,bool
    echo "<br>==========================布尔值==============================<br>";
    $a=true;
    var_dump($a);
    echo "<br>";
    $a='';
    if ($a) {
    //'',0,0.0,null,空数组,false都会被认为是布尔值false,从未不会执行下面的代码
    echo $a."是true";
    }else{
    echo $a."是false";
    }

    //数组
    //数组能够在单一变量名中存储许多值,并且能够通过索引号来访问某个值。

    echo "<br>==========================数组==============================<br>";
    $p = array('刘亦菲','女' ,18); //多种写法
    $p1 = ['刘亦菲','女' ,18];
    $p2 = array('name'=>'刘亦菲','sex'=>'女','age'=>18);
    var_dump($p2); //array(3) { ["name"]=> string(9) "刘亦菲" ["sex"]=> string(3) "女" ["age"]=> int(18) }
    echo "<br>姓名:$p[0] ","性别:$p[1] ","年龄:$p[2] <br>";
    echo $p1[0],$p2['name']; //刘亦菲刘亦菲


    //count() 函数用于返回数组的长度(元素数)
    echo count($p); //3


    //数据比较
    echo "<br>==========================数据比较==============================<br>";
    if (1=='1') {
    echo "松散比较中1和'1'相等";
    }
    echo '<br>';

    if(1==='1'){
    echo "值和类型都相等";
    }
    else{
    echo "严格比较中1和'1'不相等";
    }

    echo "<br>";
    if (true=='true') {
    echo "松散比较中true和'true'相等";
    }
    echo '<br>';
    if(true==='true'){
    echo "值和类型都相等";
    }
    else{
    echo "严格比较中true和'true'不相等";
    }

    //类型判断
    echo "<br>==========================类型判断==============================<br>";
    $v1 = 1;
    echo gettype($v1); // integer ,输出的是一个字符串
    echo gettype(gettype($v1)); // string
    $v2 = "hahaha";
    echo gettype($v2); // string

    //settype():设置变量类型
    $v1 = 10;
    settype($v1,'string');
    echo gettype($v1); // string

    $v1 = 10;
    settype($v1,'array');
    echo "<br>$v1[0]",gettype($v1),gettype($v1[0]); // 10,array,integer

    //判断类型
    $a='1';
    echo "<br>",is_int($a); //无输出
    echo "<br>",is_string($a); // 1
    var_dump(is_string($a)); // bool(true)
    echo "<br>",is_bool($a); //
    var_dump(is_bool($a)); // bool(false)


    if (is_numeric('23')) { //is_numeric 检测变量是否为数字或数字字符串
    echo "haha"; //输出:haha
    }


    /*
    两个特殊判断:
    isset():判断一个变量是否存在,或变量中是否有数据,有则返回true,否则返回false;
    empty():判断是否为“空的”。如果确实是“空的”,返回true,否则返回false;
    “空的”的意思,比较接近日常生活中的“没有”。以下值都是空的(empty) :
    0,0.0, "", "0", false, array()
    而空(null) 是一个计算机中的特殊概念,表示“完全不存在”,可以理解为“真空”。
    */


    echo "<br>==========================自动转换==============================<br>";

    // 程序会根据运算时运算符所需的数据类型进行转换,如果参与运算的数据类型不是需要的类型,则会自动转换为需要的数据类型。


    echo 1+'2'; //3
    echo '1'+'2'; //3
    echo '1'+'2'; //3
    echo 1+'2abc'; //3, 会有warning:A non well formed numeric value encountered
    echo 1+'2abc34'; //3
    echo 1+'abc'; //1
    echo 1+'abc34'; //1
    echo 1.2+'2'; //3.2
    echo '1.2abc'+'2abc'; //3.2
    echo '<br>';
    var_dump ('1.0'+1-1) ; // float(1)
    echo '1.0'+1-1; //1 ,注意,这种输出省略了后面的0
    $a=1.20;
    echo $a; //1.2

    // 规律:一个字符串当做数字,就会将该字符串的最前面的数字转换为数字值,如果没有,就为0

    // 转换为整数:则直接保留整数部分

    echo 10.8 % 3.9 ; //1
    echo '10.8' % '3.6'; //1
    echo '10.8a' % '3.6bc'; //1 会有warning:A non well formed numeric value encountered


    echo "<br>==========================强制转换==============================<br>";
    $b='2.9';
    $a = (int)$b;
    echo $a; //2,直接去除小数点后的值
    echo $b; //2.9,原值不变
    var_dump($a); //int(2)
    $a = (string)$a;
    var_dump($a); //string(1) "2"

    echo "<br>==========================NULL值==============================<br>";
    // 特殊的 NULL 值表示变量无值。null 是数据类型 NULL 唯一可能的值。
    // NULL 值标示变量是否为空。也用于区分空字符串与空值数据库。
    // 可以通过把值设置为 NULL,将变量清空

    $x="Hello world!";
    $x=null;
    var_dump($x); // NULL


    ?>

    练习:

      写一个十进制转换成其他进制的网页。

     

     

  • 相关阅读:
    Leetcode: Find Median from Data Stream
    Leetcode: Flip Game II
    Leetcode: Flip Game
    Leetcode: Nim Game
    Leetcode: Word Pattern II
    Leetcode: Word Pattern
    Leetcode: Game of Life
    Leetcode: Alien Dictionary && Summary: Topological Sort
    Leetcode: Unique Word Abbreviation
    Leetcode: Find the Duplicate Number
  • 原文地址:https://www.cnblogs.com/wangyi0419/p/12350501.html
Copyright © 2011-2022 走看看