首頁  >  文章  >  後端開發  >  php程式碼審計(一)-----調試函數

php程式碼審計(一)-----調試函數

不言
不言原創
2018-04-03 14:13:581782瀏覽

這篇文章給大家分享的內容是調試函數,有興趣的朋友可以看一下,也可以給有需要幫助的同學一點參考


  • #兩個最基本的輸出方法echo和print

/**
*echo 是一个语言结构,有无括号均可使用:echo 或 echo()
*///打印字符串echo "hello";
echo("hello");//打印变量$text="learn php";
echo $text;
echo($text);

/**
print 也是语言结构,有无括号均可使用:print 或 print()
*///打印字符串print "hello";
print("hello");//打印变量$text="learn php";
print $text;
print($text);


##echo和print 之間的差異:

echo - 能夠輸出一個以上的字串

print - 只能輸出一個字串,並且總是回傳1
提示:echo 比print 稍快,因為它不會回傳任何值


  • 雙引號和單引號的差異

#雙引號解析變數

單引號不解析變數

 $str1="hello"; $str2="php"; echo "$str1";//输出:hello echo '$str2';//输出:$str2

  • print_r() 函數

  • ##print_r() 顯示關於一個變數的易於理解的訊息。如果給定的是 string、integer  
或 float,將會列印變數值本身。如果給出的是 array,將會按照一定格式顯示鍵

和元素。 object 與數組類似。
記住,print_r() 將把陣列的指標移到最後邊。使用 reset() 可讓指標回到起始處。

//打印string$str1="hello";
print_r($str1);
print_r("hello");//打印integer$num=1024;
print_r($num);
print_r(1024);//打印float$num=1024.1024;
print_r($num);
print_r(1024.1024);//打印array
 $cars=array("Volvo","BMW","Toyota");
 print_r($cars);/*打印结果
Array ( [0] => Volvo [1] => BMW [2] => Toyota )
*/

    *var_dump() 函數
  • var_dump()方法,判斷變數的類型與長度,並輸出變數的數值,如果變數有值,則輸出是變數的值,並傳回資料類型。用於精確調試。

    顯示關於一個或多個表達式的結構訊息,包括表達式的型別與值。數組將遞歸展開值,透過縮排顯示其結構。

     $cars=array("Volvo","BMW","Toyota");
     var_dump($cars); /* 打印结果
     E:\wamp64\www\test.php:56:
    array (size=3)
      0 => string 'Volvo' (length=5)
      1 => string 'BMW' (length=3)
      2 => string 'Toyota' (length=6)
     */
    
    
     $n=null;
     var_dump($n); /*打印结果
     E:\wamp64\www\test.php:59:null
     */
  • var_export() 函數

    var_export() 函數傳回傳遞給該函數的變數的結構訊息,它和var_dump() 類似,不同的是其傳回的表示是合法的PHP 程式碼。 var_export必須回傳合法的php程式碼, 也就是說,var_export回傳的程式碼,可以直接當作php程式碼賦值個一個變數。 而這個變數就會取得和被var_export一樣的型別的值。

注意三點:

1.var_export()會一直保留著結構化形式儲存資料。2. 但特別請記住:此時的變數值的型別已是字串了($var),不能再以陣列的方式取出裡面的值來
3. var_export 對於資源型的變數會輸出NULL

 $cars=array("Volvo","BMW","Toyota");
 var_export($cars);
 /*打印结果
 array ( 0 => 'Volvo', 1 => 'BMW', 2 => 'Toyota', )
 */

  • debug_zval_dump()函數

    debug_zval_dump() 輸出結果跟var_dump 類似,唯一增加的一個值是refcount,就是記錄一個變數被引用了多少次,這是php 的copy on write (寫時複製) 的機制的一個重要特徵。

     $cars=array("Volvo","BMW","Toyota");
     debug_zval_dump($cars);
     /*打印结果  array(3) refcount(2){ [0]=> string(5) "Volvo" refcount(1) [1]=> string(3) "BMW" refcount(1) [2]=> string(6) "Toyota" refcount(1) }
     */
  • exit()函數

    終止程式執行

    ##兩個最基本的輸出方法echo和print
  • /**
    *echo 是一个语言结构,有无括号均可使用:echo 或 echo()
    *///打印字符串echo "hello";
    echo("hello");//打印变量$text="learn php";
    echo $text;
    echo($text);

    /**
    print 也是语言结构,有无括号均可使用:print 或 print()
    *///打印字符串print "hello";
    print("hello");//打印变量$text="learn php";
    print $text;
    print($text);
echo 和print 之間的差異:

echo - 能夠輸出一個以上的字串print - 只能輸出一個字串,並且總是傳回1

提示:echo 比print 稍快,因為它不會傳回任何值




    雙引號與單引號的差異
  • #雙引號解析變數
  • 單引號不解析變數
 $str1="hello"; $str2="php"; echo "$str1";//输出:hello echo '$str2';//输出:$str2


    print_r() 函數
  • #print_r() 顯示關於一個變數的易於理解的資訊。如果給定的是 string、integer  
  • 或 float,將會列印變數值本身。如果給出的是 array,將會按照一定格式顯示鍵
和元素。 object 與數組類似。

記住,print_r() 將把陣列的指標移到最後邊。使用 reset() 可讓指標回到起始處。

//打印string$str1="hello";
print_r($str1);
print_r("hello");//打印integer$num=1024;
print_r($num);
print_r(1024);//打印float$num=1024.1024;
print_r($num);
print_r(1024.1024);//打印array
 $cars=array("Volvo","BMW","Toyota");
 print_r($cars);/*打印结果
Array ( [0] => Volvo [1] => BMW [2] => Toyota )
*/


*var_dump() 函數
    var_dump()方法,判斷變數的類型與長度,並輸出變數的數值,如果變數有值,則輸出是變數的值,並傳回資料類型。用於精確調試。
  • 顯示關於一個或多個表達式的結構訊息,包括表達式的型別與值。數組將遞歸展開值,透過縮排顯示其結構。



     $cars=array("Volvo","BMW","Toyota");
     var_dump($cars); /* 打印结果
     E:\wamp64\www\test.php:56:
    array (size=3)
      0 => string 'Volvo' (length=5)
      1 => string 'BMW' (length=3)
      2 => string 'Toyota' (length=6)
     */
    
    
     $n=null;
     var_dump($n); /*打印结果
     E:\wamp64\www\test.php:59:null
     */

    var_export() 函數
  • var_export() 函數傳回傳遞給該函數的變數的結構訊息,它和var_dump() 類似,不同的是其傳回的表示是合法的PHP 程式碼。 var_export必須回傳合法的php程式碼, 也就是說,var_export回傳的程式碼,可以直接當作php程式碼賦值個一個變數。 而這個變數就會取得和被var_export一樣的型別的值。

  • 注意三點:

1.var_export()會一直保留著結構化形式儲存資料。2. 但特別請記住:此時的變數值的型別已是字串了($var),不能再以陣列的方式取出裡面的值來3. var_export 對於資源型的變數會輸出NULL

 $cars=array("Volvo","BMW","Toyota");
 var_export($cars);
 /*打印结果
 array ( 0 => 'Volvo', 1 => 'BMW', 2 => 'Toyota', )
 */

  • debug_zval_dump()函数
    debug_zval_dump() 输出结果跟 var_dump 类似,唯一增加的一个值是 refcount,就是记录一个变量被引用了多少次,这是 php 的 copy on write (写时复制) 的机制的一个重要特点。

 $cars=array("Volvo","BMW","Toyota");
 debug_zval_dump($cars);
 /*打印结果  array(3) refcount(2){ [0]=> string(5) "Volvo" refcount(1) [1]=> string(3) "BMW" refcount(1) [2]=> string(6) "Toyota" refcount(1) }
 */
  • exit()函数
    终止程序运行

相关推荐:

PHP调试函数和日志记录函数分享,调试日志记录_PHP教程

以上是php程式碼審計(一)-----調試函數的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn