• php 重难点


    1、isset()函数 、array_key_exists()函数、empty()函数

    <?php
    
    $a = array ('test' => 1, 'hello' => NULL);
    
    var_dump( isset ($a['test') ); // TRUE
    var_dump( isset ($a['foo') ); // FALSE
    var_dump( isset ($a['hello') ); // FALSE
    
    // 'hello' 等于 NULL,所以被认为是未赋值的。
    // 如果想检测 NULL 键值,可以试试下边的方法。
    var_dump( array_key_exists('hello', $a) ); // TRUE
    
    ?>

    isset() 函数

    若变量不存在则返回 FALSE 
    若变量存在且其值为NULL,也返回 FALSE 
    若变量存在且值不为NULL,则返回 TURE    

    当 ""、0、"0"、NULL、、FALSE、array() 或者 变量不存在时 empty($tmp) 均返回 true

    array_key_exists() 函数比较宽泛,当值为 null “” “0” 时均返回true,只要你在array中设置了key

    综上: array_key_exists() 函数要求最低, isset()函数次之  empty()函数检测最严格

    静态变量+静态方法:

    <?php
        class Test{
            const STATUS_NORMAL  = 0;
            public static $count = 1;
            public static function echoConst(){
                //函数内部调用常量
                echo self::STATUS_NORMAL;
            }
            public static function strPrint(){
                echo 'this is strPrint static function 
    
    ';
            }
            public static function addCount(){函数内部调用函数
                //函数内部调用类变量
                self::$count += 1;
            }
            public function staticFuncInvoke(){
            //函数内部调用静态方法 self
    ::strPrint(); } } $test = new Test(); $test->addCount(); $test->addCount(); $test->addCount(); //调用类常量 echo $test::STATUS_NORMAL; echo Test::STATUS_NORMAL; //调用静态变量 echo $test::$count; echo Test::$count; //调用静态方法 $test->staticFuncInvoke(); Test::staticFuncInvoke(); ?>

    php变量及方法调用总结

    <?php
    
        $global_book = "编程测试书籍456";
    
        function test() {
            echo "test
    
    ";
        }
    
        class MyTest 
        {
            protected $book = "编程测试书籍";
    
            function __construct() {
                //调用全局方法
                test();
                //调用全局变量(两种方法)
                $this->print_ok($GLOBALS['global_book']);
                global $global_book;
                $this->print_ok($global_book);
    
                //调用局部变量(仅此一种方法)
                $temp = "good";
                $this->print_ok($temp);
                //调用类方法(仅此一种方法)
                $this->print_ok($this->get_name());
                //调用类变量(仅此一种方法)
                $this->print_ok($this->book);
            }
    
            private function print_ok($str) {
                echo "
    ";
                echo $str;
                echo "
    
    ";
            }
    
            private function get_name() {
                return "ivar1001";
            }
        }
    
        new MyTest();
    ?>

    一定注意: $this  不是  this

     bug一 

    <?php
        $son_search_option = array();  
        //正确的添加
        $search_option[] = " accounts_receivable_id in $id_set";
    
        //另一种错误的添加
        $search_option[] = array( 
            accounts_receivable_id in $id_set"
        );
    ?>

     bug二

    <?php
        $result = strpos("Hello world!","world");
        if($result == false)
            echo "cuowu";
        else 
            echo "zhegnque";
    ?>

     strpos() 函数用于检索字符串内指定的字符或文本。

    如果找到匹配,则会返回首个匹配的字符位置。如果未找到匹配,则将返回 FALSE。

    <?php
        echo str_replace("world","Shanghai","Hello world!");
    ?>

    str_replace("old string", "new string", "parent string");  将 parent string  中 的 old string 全部替换为 new string (大小写严格), 

    str_replace("old string", "new string", "parent string");  将 parent string  中 的 old string 全部替换为 new string (不区分大小写)

    bug三

    单引号字符串中的变量是无效的 

    <?php
        $name = "good";
        $str = ‘$name dook’;
        echo $str;    
    ?>

    上述代码会输出   $name dook

    当换成双引号时,正确输出   good dook

    bug四

    单引号 中的转义字符是无效的

    <?php
        $name = "good";
        echo '$name 
    
    ';
        $str = "$name dook";
        echo $str;
    ?>

    上述代码会输出  $name good dook

    当把单引号换成双引号时,正常输出换行

    json格式转化

    通过json_decode()  json_encode() 函数可以进行数组与json格式字符串之间的转换

    <?php
        
        $fruits = array(
            "apple" => 5,
            "orange" => 6,
            "ice" => 3
        );
        $jsonStr = json_encode($fruits);
        $obj = json_decode($jsonStr, true);    
        var_dump($obj);
    
    ?>

    其中: json_encode 将$fruits 数组转换成了相应的json字符串(可供返回)

       json_decode($jsonStr, true)将json字符串转换成了关联数组. json_decode($jsonStr) 会将 json字符串转换成 对象

     

    trim rtrim ltrim

    <?php
        $str = "Hello WorldWorld";
        echo $str . "
    ";
        echo rtrim($str,"World!");    
    ?>

    上述代码的输出结果为 :

    Hello World World
    Hello

    故: rtrim 去掉字符串右侧的一个World 或者多个连续的World

    ltirm 去掉字符串左侧的多个连续str(多个str之间不能有空格)

    trim 去掉字符串两侧的多个连续空白符(包括空格)

    条件判断

    <?php
        $a = "";
        if($a)
            echo "good";
        else
            echo "wrong";
    ?>

    当 $a = ""  false 0 时 均判断为 false

    当 $a = " "时,true ,非0 时均判断为true

    函数

    doubleval()   floatval()
    intval()         (int)  
     
     
    获取毫秒时间
    <?php
        list($ss, $s) = explode(" ", microtime());
        $time = $s + $ss;
        echo $time;
    ?>

    其中 $ss 为带小数点的秒数,且 $ss < 1;   $s 为从1970-01-01 00:00:00开始到现在的秒数

     

    array_unique

      该函数返回数组值的唯一构成的数组,如果不同的键有相同的值,则舍弃后一个键

    array_merge

      该函数根据键将多个数组合并,如果有相同的键,则后面的value覆盖前面的value

    array_key_exists($key, $array)

      该函数判断$array 中是否有 $key 这个键

    in_array($value, $array)

      该函数判断$array 中是否有 $value 这个值

     substr($str, $start, $count)

      1、该函数截取$str 字符串(下标从 0 开始) 从 $start 开始的 $count 个字符;

      2、若 $count < 0 ,则返回 从 $start 位置开始的所有字符 除去 倒数的 |$count| 个字符

    <?php
        $a = "temp abd sdjfksdf";
        echo strlen(substr($a, 0, 25));
        echo "
    ";
        echo substr($a, 5, 2);
        echo "
    ";
        echo substr($a, 5, -4);
        
    ?>

    输出结果如下所示:

    php 中竟然允许函数中存在静态变量。。。

    <?php
        class Test {
            function get_data() {
                static $i = 1;
                echo $i++;
            }
        }
        $test = new Test();
        for($i = 0; $i <3; $i++) {
            $test->get_data();
        }
    ?>

    上述代码的输出结果为:“123”

    备注:java中不允许存在静态的局部变量,php真是太神奇了

    null 与 unset的区别:

    先上代码:

    class Test{}
    $a = new Test();
    $b = $a;
    $c = &$a;
    
    $a = null; 或者 unset($a);
    var_dump($a);echo '<br>';
    var_dump($b);echo '<br>';
    var_dump($c);echo '<br>';

    $a = null 输出为:  

    NULL
    object(Test)#1 (0) {}
    NULL

    unset($a) 输出:

    NULL
    object(Test)#1 (0) {]
    object(Test)#1 (0) {]

    当$a 与 $c 指向同一块内存地址,当$a = null时,把这块内存的内容清空了;当unset($a) 时,只是删掉了这个变量$a,但是$a 指向的内存内容未改变,通过$c可以访问这块内存

  • 相关阅读:
    MongoDB学习总结(二) —— 基本操作命令(增删改查)
    C#连接SQLite数据库方法
    第一章 算法在计算中的作用
    VS2010学习笔记
    centos+docker+jenkins
    git一些简单运用
    centos7 cannot find a valid baseurl for repo
    https://mirrors.ustc.edu.cn/dockerce/linux/centos/dockerce/repodata/repomd.xml:HTTPS Error 404 Not Found
    python路径相关处理
    python的excel处理之openpyxl
  • 原文地址:https://www.cnblogs.com/maxiaoshuai/p/6772623.html
Copyright © 2020-2023  润新知