Blog of CodeJELLOW’S ENGINEERING NOTES
← 返回文章

PHP学习笔记(二)

PHP中的 变量和数据类型,动态变量使用,常量的定义和使用

本文目录 ⌄

    PHP中的 变量和数据类型,动态变量使用,常量的定义和使用

    变量

    变量在任何计算机的语言中都会占据一段内存,包含着一些信息。变量是计算机最基础的一部分,你可以在PHP中使用$声明一个变量,例如 $myVariable 。

    如下有使用示例:

    TEXT
    <?php
    $str = "hello";
    $num = 5;
      
    echo $str;
    echo " "; // Output: hello
    echo $num; // Output: 5
    ?>

    数据类型

    随着变量类型的不同,他们的大小也会不一样。在c语言中,你可以对你的数据使用不同的数据类型。然而PHP对于数据类型的界限是模糊的,但PHP中的数据类型在创建时被自动赋予。

    那么有哪些数据类型呢?
    • null
    • boolean
    • integer
    • float
    • string
    • object
    • resource
    • array
    Null

    mull可以被赋值给任何变量,它代表变量为空值。

    TEXT
    <?php
    $foo = null;
    ?>
    Boolean

    这种数据类型只有两种值true和false

    和c语言一样,控制程序的进程,用在if和while中

    TEXT
    <?php
    $foo = true;
    if ($foo) {
        echo "true";
    } else {
        echo "false";
    }
    Integer

    一个整形可以是正数或者负数,可以被用于任何进制的数字。整型的大小由平台决定,PHP不支持无符号整型。

    TEXT
    <?php
    $negative = -3; // 负数
    $zero = 0; // 0,可以是null或者负数
    $positive = 123; // 正数
    $zeroPos = 0123; //0标识8进制
    $hex = 0xAB; //0x表示16进制
    $bin = 0b1010; // 0b 表示2进制
    ?>
    Float

    浮点数,“double”或简称为“float”,是十进制数。

    TEXT
    <?php
    $foo1 = 1.23;
    $foo2 = 10.0;
    $bar1 = -INF; // 负无穷
    $bar2 = NAN; // NAN 表示不是一个数字
    ?>
    Array

    数组就像一个列表,最开始的索引值为0

    TEXT
    <?php
    $foo = array(1, 2, 3); // 数组函数
    $bar = ["A", true, 123 => 5]; // PHP5.4以上,使用短句法,这里定义了三个元素
    echo $bar[0]; // 返回 A
    echo "\n";
    echo $bar[1]; // 返回true
    echo "\n";
    echo $bar[123]; // 返回5
    // echo $bar[1234]; //返回error
    ?>

    数组也可以被一个关键词索引,比如

    TEXT
    <?php
    $array = array();
    $array["foo"] = "bar";
    $array["bar"] = "quux";
    $array[42] = "hello";
    echo $array["foo"]; //输出 "bar"
    echo "\n";
    echo $array["bar"]; // 输出 "quux"
    echo "\n";
    echo $array[42]; // 输出"hello"
    ?>
    String

    字符串就像一个字符数组。像数组一样,可以为字符串建立索引以返回其各个字符:

    TEXT
    <?php
    $foo = "I am a string";
    echo $foo; // 输出"I am a string"
    echo "\n";
    echo $foo[3]; // 打印 'm'
    ?>

    可变变量

    把变量名转化为动态变量,可以把$放置在变量名之前

    TEXT
    <?php
     $var='hello';
     $$var='world';
    echo $$var;  //输出world
    ?>

    还有一种连接的方式

    TEXT
    <?php
    $fooBar = 'baz';
    $varPrefix = 'foo';
    
    echo "\$fooBar:\t\t\t\t";
    echo $fooBar; // 输出 "baz"
    echo"\n";
    
    echo "\${\$varPrefix . 'Bar'}:\t\t"; //.将foo与Bar连接起来,相当于fooBar
    echo ${$varPrefix . 'Bar'}; // 输出 "baz"
    ?>

    常量

    根据定义,常量是在脚本执行期间无法修改的变量。它们是使用const语句或define函数创建的。

    PHP中通常使用大写单词表示常量

    TEXT
    <?php
    const PI = 3.14; // 浮点数
    define("EARTH_IS_FLAT", false); //boolean
    const UNKNOWN = null; // null
    define("APP_ENV", "dev"); // string
    const MAX_SESSION_TIME = 60 * 60; // integer
    const APP_LANGUAGES = ["de", "en"]; // arrays
    define("BETTER_APP_LANGUAGES", ["lu", "de"]); // arrays
    ?>

    新定义常量时,可以使用之前定义过的常量

    TEXT
    <?php
    const TAU = PI * 2;
    define("EARTH_IS_ROUND", !EARTH_IS_FLAT);
    define("MORE_UNKNOWN", UNKNOWN);
    define("APP_ENV_UPPERCASE", strtoupper(APP_ENV)); 
    define("MAX_SESSION_TIME_IN_MINUTES", MAX_SESSION_TIME / 60);
    const APP_FUTURE_LANGUAGES = [-1 => "es"] + APP_LANGUAGES; 
    define("APP_BETTER_FUTURE_LANGUAGES", array_merge(["fr"],BETTER_APP_LANGUAGES));
    ?>

    但你不能使用函数

    TEXT
    <?php
    const TIME = time(); // 错误
    ?>
    保留字

    一些常量名称由PHP保留,无法重新定义

    检查是否被define

    定义的函数并不关心常量的值;它只在乎常量是否存在。即使常量的值为null或false,该函数仍将返回true。

    以下代码显示了如何使用定义的函数检查常量GOOD和AWESOME是否存在。

    TEXT
    <?php
    define("GOOD", false);
    if (defined("GOOD")) {
      echo "GOOD is defined.\n" ; // prints "GOOD is defined"
    
      if (GOOD)
        echo "GOOD is true." ; 
      else 
        echo "GOOD is false.";  //打印这个
    }
    
    if (!defined("AWESOME")) {
      define("AWESOME", true); // 如果没定义,现在定义
    }
    ?>

    得到所有的定义常量

    要获取所有定义的常量,包括由PHP创建的常量,请使用PHP函数get_defined_constants。以下代码段显示了如何完成此操作

    TEXT
    <?php
    $constants = get_defined_constants();
    var_dump($constants); // 这个表单会很长
    ?>

    要仅获取应用定义的常量,请在脚本的开头和结尾处调用函数(通常在引导过程之后)。看一下以下代码片段:

    TEXT
    <?php
    $constants = get_defined_constants();
    define("HELLO", "hello");
    define("WORLD", "world");
    $new_constants = get_defined_constants();
    $myconstants = array_diff_assoc($new_constants, $constants); //比较Key和value,返回不同
    var_export($myconstants); //打印
    ?>

    输出为:

    array ( ‘HELLO’ => ‘hello’, ‘WORLD’ => ‘world’, )

    在上述代码的第5行中,我们使用了PHP的array_diff_assoc函数。此函数采用两个参数,比较两者的键和值并返回差值。在这种情况下,它将返回所有新定义的常量。

    使用常量的方法

    TEXT
    <?php
    //definition
    define("EARTH_IS_FLAT", false); // boolean
    define("APP_ENV_UPPERCASE", "DEV"); // string
    
    //usage
    if (EARTH_IS_FLAT)
      echo "Earth is flat.\n";
    else
      echo "Earth is round.\n";
    
    echo APP_ENV_UPPERCASE;
    ?>

    如果你不不使用常量名,还可以这样使用

    TEXT
    <?php
    //definition
    define("EARTH_IS_FLAT", false); // boolean
    define("APP_ENV_UPPERCASE", "DEV"); // string
    
    $const1 = "EARTH_IS_FLAT";
    $const2 = "APP_ENV_UPPERCASE";
    if (constant($const1)) 
      echo "Earth is flat.\n";
    else
      echo "Earth is round.\n";
    
    echo constant($const2);
    ?>

    通过 RSS 订阅更新 →