1. 程式人生 > >php-3(進階)

php-3(進階)

1.多維資料迴圈和遍歷

<?php
// 二維陣列:
$cars = array
(
    array("Volvo",100,96),
    array("BMW",60,59),
    array("Toyota",110,100)
);
for ($i=0;$i<sizeof($cars);$i++){
    $a=$cars[$i];
    for ($x=0;$x<sizeof($a);$x++){
    echo($a[$x].PHP_EOL);
    }
    echo("<br>");
    date_default_timezone_set("Etc/GMT-8");//php預設時間少8小時,設定北京時間
    echo(date("Y-m-d H:i:s"));
}

?>

 

2.php時間函式date()

<?php

      //Asia/Chongqing ,Asia/Shanghai ,Asia/Urumqi (依次為重慶,上海,烏魯木齊)
       //港臺地區可用:Asia/Macao ,Asia/Hong_Kong ,Asia/Taipei (依次為澳門,香港,臺北)
       //臺灣地區可設為:date.timezone = "Asia//Taipei"
      //還有新加坡:Asia/Singapore
    date_default_timezone_set("Etc/GMT-8");//php預設時間少8小時,設定北京時間
    echo(date("Y-m-d H:i:s"));

?>
format 字元 說明 返回值例子
--- ---
d 月份中的第幾天,有前導零的 2 位數字 0131
D 星期中的第幾天,文字表示,3 個字母 MonSun
j 月份中的第幾天,沒有前導零 131
l("L"的小寫字母) 星期幾,完整的文字格式 SundaySaturday
N ISO-8601 格式數字表示的星期中的第幾天(PHP 5.1.0 新加) 1(表示星期一)到 7(表示星期天)
S 每月天數後面的英文字尾,2 個字元 stndrd 或者 th。可以和 j 一起用
w 星期中的第幾天,數字表示 0(表示星期天)到 6(表示星期六)
z 年份中的第幾天 0365
星期 --- ---
W ISO-8601 格式年份中的第幾周,每週從星期一開始(PHP 4.1.0 新加的) 例如:42(當年的第 42 周)
--- ---
F 月份,完整的文字格式,例如 January 或者 March JanuaryDecember
m 數字表示的月份,有前導零 0112
M 三個字母縮寫表示的月份 JanDec
n 數字表示的月份,沒有前導零 112
t 給定月份所應有的天數 2831
--- ---
L 是否為閏年 如果是閏年為 1,否則為 0
o ISO-8601 格式年份數字。這和 Y 的值相同,只除了如果 ISO 的星期數(W)屬於前一年或下一年,則用那一年。(PHP 5.1.0 新加) Examples: 1999 or 2003
Y 4 位數字完整表示的年份 例如:19992003
y 2 位數字表示的年份 例如:9903
時間 --- ---
a 小寫的上午和下午值 ampm
A 大寫的上午和下午值 AMPM
B Swatch Internet 標準時 000999
g 小時,12 小時格式,沒有前導零 112
G 小時,24 小時格式,沒有前導零 023
h 小時,12 小時格式,有前導零 0112
H 小時,24 小時格式,有前導零 0023
i 有前導零的分鐘數 0059>
s 秒數,有前導零 0059>
u 毫秒 (PHP 5.2.2 新加)。需要注意的是 date() 函式總是返回 000000 因為它只接受 integer 引數, 而 DateTime::format() 才支援毫秒。 示例: 654321
時區 --- ---
e 時區標識(PHP 5.1.0 新加) 例如:UTCGMTAtlantic/Azores
I 是否為夏令時 如果是夏令時為 1,否則為 0
O 與格林威治時間相差的小時數 例如:+0200
P 與格林威治時間(GMT)的差別,小時和分鐘之間有冒號分隔(PHP 5.1.3 新加) 例如:+02:00
T 本機所在的時區 例如:ESTMDT(【譯者注】在 Windows 下為完整文字格式,例如"Eastern Standard Time",中文版會顯示"中國標準時間")。
Z 時差偏移量的秒數。UTC 西邊的時區偏移量總是負的,UTC 東邊的時區偏移量總是正的。 -4320043200
完整的日期/時間 --- ---
c ISO 8601 格式的日期(PHP 5 新加) 2004-02-12T15:19:21+00:00
r RFC 822 格式的日期 例如:Thu, 21 Dec 2000 16:01:07 +0200
U 從 Unix 紀元(January 1 1970 00:00:00 GMT)開始至今的秒數 參見 time()

3.php包含檔案includ和require

nclude 和 require 語句用於在執行流中插入寫在其他檔案中的有用的程式碼。

include 和 require 除了處理錯誤的方式不同之外,在其他方面都是相同的:

  • require 生成一個致命錯誤(E_COMPILE_ERROR),在錯誤發生後腳本會停止執行。
  • include 生成一個警告(E_WARNING),在錯誤發生後腳本會繼續執行。

include 和 require 的區別

  • require 一般放在 PHP 檔案的最前面,程式在執行前就會先匯入要引用的檔案;
  • include 一般放在程式的流程控制中,當程式執行時碰到才會引用,簡化程式的執行流程。
  • require 引入的檔案有錯誤時,執行會中斷,並返回一個致命錯誤;
  • include 引入的檔案有錯誤時,會繼續執行,並返回一個警告。

語法:

include 'filename';


require 'filename';

4.檔案處理

fopen() 函式用於在 PHP 中開啟檔案。

fgets()函式,獲取檔案內容。第一個引數為檔案流,第二個為長度

fclose()關閉操作的檔案

<?php
//fopen操作的檔案路徑,第一個引數 為檔案路徑和名稱,第二個為操作型別
//or exit當檔案無效時列印提示
$f=fopen("C:/Users/Administrator/Desktop/test.txt", "r") or exit("Unable to open file!");
//fgets()函式,逐行讀取檔案。第一個引數為檔案流,第二個為長度。在呼叫該函式之後,檔案指標會移動到下一行。
//fgetc() 函式用於從檔案中逐字元地讀取檔案。在呼叫該函式之後,檔案指標會移動到下一個字元
while(!feof($f))
{
    echo fgets($f). "<br>";
    echo fgetc($f). "<br>";
}
fclose($f)
?>

檔案操作型別:

模式 描述
r 只讀。在檔案的開頭開始。
r+ 讀/寫。在檔案的開頭開始。
w 只寫。開啟並清空檔案的內容;如果檔案不存在,則建立新檔案。
w+ 讀/寫。開啟並清空檔案的內容;如果檔案不存在,則建立新檔案。
a 追加。開啟並向檔案末尾進行寫操作,如果檔案不存在,則建立新檔案。
a+ 讀/追加。通過向檔案末尾寫內容,來保持檔案內容。
x 只寫。建立新檔案。如果檔案已存在,則返回 FALSE 和一個錯誤。
x+ 讀/寫。建立新檔案。如果檔案已存在,則返回 FALSE 和一個錯誤。

5.檔案上傳

  • <form> 標籤的 enctype 屬性規定了在提交表單時要使用哪種內容型別。在表單需要二進位制資料時,比如檔案內容,請使用 "multipart/form-data"。
  • <input> 標籤的 type="file" 屬性規定了應該把輸入作為檔案來處理。舉例來說,當在瀏覽器中預覽時,會看到輸入框旁邊有一個瀏覽按鈕。

upload.php

<?php 
header("content-type:text/html;charset=GBK");
?>
<html>
<head>
<meta charset="GBK">
<title>upload</title>
</head>
<body>

<form action="upload1.php" method="post" enctype="multipart/form-data">
    <label for="file">檔名:</label>
    <input type="file" name="file" id="file"><br>
    <input type="submit" name="submit" value="提交">
</form>

</body>
</html>

upload1.php

<?php 
header("content-type:text/html;charset=GBK");
// 允許上傳的圖片字尾
$allowedExts = array("gif", "jpeg", "jpg", "png");
//explode把字串打散維陣列
$temp = explode(".", $_FILES["file"]["name"]);
$extension = end($temp);     // 獲取檔案字尾名
if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/jpg")
|| ($_FILES["file"]["type"] == "image/pjpeg")
|| ($_FILES["file"]["type"] == "image/x-png")
|| ($_FILES["file"]["type"] == "image/png"))
&& ($_FILES["file"]["size"] < 204800)   // 小於 200 kb
//in_array檢查陣列中是否包含某個值
&& in_array($extension, $allowedExts))
{
    if ($_FILES["file"]["error"] > 0)
    {
        echo "錯誤:: " . $_FILES["file"]["error"] . "<br>";
    }
    else
    {
        echo "上傳檔名: " . $_FILES["file"]["name"] . "<br>";
        echo "檔案型別: " . $_FILES["file"]["type"] . "<br>";
        echo "檔案大小: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
        echo "檔案臨時儲存的位置: " . $_FILES["file"]["tmp_name"] . "<br>";
        
        // 判斷當期目錄下的 upload 目錄是否存在該檔案,若沒有則建立
        if(!(file_exists("upload"))){
            mkdir(__DIR__."/upload");
        }
        if (file_exists("upload/" . $_FILES["file"]["name"]))
        {
            echo $_FILES["file"]["name"] . " 檔案已經存在。 ";
        }
        else
        {
            // 如果 upload 目錄不存在該檔案則將檔案上傳到 upload 目錄下
            move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $_FILES["file"]["name"]);
            echo "檔案儲存在: " . "upload/" . $_FILES["file"]["name"];
        }
    }
}
else
{
    echo "非法的檔案格式";
}
?>

6.cookie

cookie 常用於識別使用者。cookie 是一種伺服器留在使用者計算機上的小檔案。每當同一臺計算機通過瀏覽器請求頁面時,這臺計算機將會發送 cookie。通過 PHP,您能夠建立並取回 cookie 的值。

setcookie() 函式用於設定 cookie。

setcookie() 函式必須位於 <html> 標籤之前。

語法:setcookie(name, value, expire, path, domain);

設定、取出及刪除cookie

<?php 
header("content-type:text/html;charset=GBK");
//設定cookie
setcookie("user", "runoob", time()+3600);
?>
<html>
<head>
<meta charset="GBK">
<title>cookie</title>
</head>
<body>
<?php 
//根據名稱取出cookie
echo $_COOKIE["user"];
echo("<br>");
//取出所有cookie
print_r($_COOKIE);
// 設定 cookie 過期時間為過去 1 小時
setcookie("user", "", time()-3600);
echo $_COOKIE["user"]."------";
?>

</body>
</html>

7.session

session 變數用於儲存關於使用者會話(session)的資訊,或者更改使用者會話(session)的設定。Session 變數儲存單一使用者的資訊,並且對於應用程式中的所有頁面都是可用的。

在使用 session 之前,首先必須啟動會話。

session_start() 函式必須位於 <html> 標籤之前

例:session的建立及銷燬

<?php 
header("content-type:text/html;charset=GBK");
//啟動session
session_start();
//儲存和取回 session 變數的正確方法是使用 PHP $_SESSION 變數
if(isset($_SESSION['num'])){
    $_SESSION['num']=$_SESSION['num']+1;
}else{
 $_SESSION['num']=1;
}
?>
<html>
<head>
<meta charset="GBK">
<title>cookie</title>
</head>
<body>
<?php 
//取出session
echo $_SESSION["num"];
echo("<br>");
//釋放指定session
unset($_SESSION['num']);
//釋放所有session
session_destroy();
?>

</body>
</html>

8.php傳送email

配置方式有多種,以xampp環境傳送qq郵箱為例,利用stmp mail()函式傳送郵件

1.配置php.ini

  sendmail_path =D:\xampp\sendmail\sendmail.exe -t(只需要配置這一個)

2.配置sendemail.ini

smtp_server=smtp.qq.com

smtp_port=25

smtp_ssl=auto

error_logfile=error.log

auth_username=傳送者QQ郵箱@qq.com
auth_password=你的授權碼(設定第三步時,會返給你授權碼)

force_sender=傳送者QQ郵箱@qq.com

3.去郵箱設定允許stmp郵件收發

4.編寫測試php程式碼

<?php
header("content-type:text/html;charset=GBK");
$to = "接收者@qq.com";         // 郵件接收者
$subject = "php郵件";                // 郵件標題
$message = "Hello word!。";  // 郵件正文
$from = "傳送者@qq.com";   // 郵件傳送者
$headers = "From:" . $from;         // 頭部資訊設定
mail($to,$subject,$message,$headers);
echo "郵件已傳送";
?>

9.錯誤處理

自定義錯誤處理器

該函式必須有能力處理至少兩個引數 (error level 和 error message),但是可以接受最多五個引數(可選的:file, line-number 和 error context);

語法:error_function(error_level,error_message, error_file,error_line,error_context)

引數含義:

引數 描述
error_level 必需。為使用者定義的錯誤規定錯誤報告級別。必須是一個數字。參見下面的表格:錯誤報告級別。
error_message 必需。為使用者定義的錯誤規定錯誤訊息。
error_file 可選。規定錯誤發生的檔名。
error_line 可選。規定錯誤發生的行號。
error_context 可選。規定一個數組,包含了當錯誤發生時在用的每個變數以及它們的值。

    error_level級別:

常量 描述
2 E_WARNING 非致命的 run-time 錯誤。不暫停指令碼執行。
8 E_NOTICE run-time 通知。在指令碼發現可能有錯誤時發生,但也可能在指令碼正常執行時發生。
256 E_USER_ERROR 致命的使用者生成的錯誤。這類似於程式設計師使用 PHP 函式 trigger_error() 設定的 E_ERROR。
512 E_USER_WARNING 非致命的使用者生成的警告。這類似於程式設計師使用 PHP 函式 trigger_error() 設定的 E_WARNING。
1024 E_USER_NOTICE 使用者生成的通知。這類似於程式設計師使用 PHP 函式 trigger_error() 設定的 E_NOTICE。
4096 E_RECOVERABLE_ERROR 可捕獲的致命錯誤。類似 E_ERROR,但可被使用者定義的處理程式捕獲。(參見 set_error_handler())
8191 E_ALL 所有錯誤和警告。(在 PHP 5.4 中,E_STRICT 成為 E_ALL 的一部分)
<?php
header("content-type:text/html;charset=GBK");
function customError($errno, $errstr,$error_file,$error_line,$error_context)
{
    echo("錯誤級別:".$errno."<br>");
    echo("錯誤資訊:".$errstr."<br>");
    echo("檔名稱:".$error_file."<br>");
    echo("行數:".$error_line."<br>");
    echo(sizeof($error_context));
    for ($i=1;$i<=sizeof($error_context);$i++){
        echo($error_context[$i]."<br>");
    } 
}


// 設定錯誤處理函式
set_error_handler("customError" );
//trigger_error("變數值必須小於等於 1");

// 觸發錯誤
echo($test);
?>

10.exception異常

當異常被丟擲時,其後的程式碼不會繼續執行,PHP 會嘗試查詢匹配的 "catch" 程式碼塊。

如果異常沒有被捕獲,而且又沒用使用 set_exception_handler() 作相應的處理的話,那麼將發生一個嚴重的錯誤(致命錯誤),並且輸出 "Uncaught Exception" (未捕獲異常)的錯誤訊息。

Try、throw 和 catch:

  1. Try - 使用異常的函式應該位於 "try" 程式碼塊內。如果沒有觸發異常,則程式碼將照常繼續執行。但是如果異常被觸發,會丟擲一個異常。
  2. Throw - 裡規定如何觸發異常。每一個 "throw" 必須對應至少一個 "catch"。
  3. Catch - "catch" 程式碼塊會捕獲異常,並建立一個包含異常資訊的物件。
<?php
header("content-type:text/html;charset=GBK");
// 建立一個有異常處理的函式
function checkNum($number)
{
    if($number!=1)
    {
        throw new Exception("數值不等於1");
    }
    return true;
}

// 在 try 塊 觸發異常
try
{
    checkNum(3);
    // 如果丟擲異常,以下文字不會輸出
    echo '如果輸出該內容,說明 $number 變數';
}
// 捕獲異常
catch(Exception $e)
{
    echo 'Message: ' .$e->getMessage();
}
?>
  1. 建立 checkNum() 函式。它檢測數字是否大於 1。如果是,則丟擲一個異常。
  2. 在 "try" 程式碼塊中呼叫 checkNum() 函式。
  3. checkNum() 函式中的異常被丟擲。
  4. "catch" 程式碼塊接收到該異常,並建立一個包含異常資訊的物件 ($e)。
  5. 通過從這個 exception 物件呼叫 $e->getMessage(),輸出來自該異常的錯誤訊息。

11.過濾器

PHP 過濾器用於驗證和過濾來自非安全來源的資料,比如使用者的輸入。

PHP 過濾器用於驗證和過濾來自非安全來源的資料。

測試、驗證和過濾使用者輸入或自定義資料是任何 Web 應用程式的重要組成部分。

PHP 的過濾器擴充套件的設計目的是使資料過濾更輕鬆快捷。

幾乎所有的 Web 應用程式都依賴外部的輸入。這些資料通常來自使用者或其他應用程式(比如 web 服務)。通過使用過濾器,您能夠確保應用程式獲得正確的輸入型別。

您應該始終對外部資料進行過濾!

  • 來自表單的輸入資料
  • Cookies
  • Web services data
  • 伺服器變數
  • 資料庫查詢結果

函式:

如需過濾變數,請使用下面的過濾器函式之一:

  • filter_var() - 通過一個指定的過濾器來過濾單一的變數
  • filter_var_array() - 通過相同的或不同的過濾器來過濾多個變數
  • filter_input - 獲取一個輸入變數,並對它進行過濾
  • filter_input_array - 獲取多個輸入變數,並通過相同的或不同的過濾器對它們進行過濾

Validating 和 Sanitizing:

Validating 過濾器:

  • 用於驗證使用者輸入
  • 嚴格的格式規則(比如 URL 或 E-Mail 驗證)
  • 如果成功則返回預期的型別,如果失敗則返回 FALSE

Sanitizing 過濾器:

  • 用於允許或禁止字串中指定的字元
  • 無資料格式規則
  • 始終返回字串

filter_var()例項:

<?php 
header("content-type:text/html;charset=GBK");
$int = 123; // 無額外過濾選項 只判定是否為整數 
if(!filter_var($int, FILTER_VALIDATE_INT)) {
    // 輸出:Integer is valid 
    echo "不是整數"."<br>"; 
} else { 
    echo "是整數"."<br>"; 
} 
// 選項和標誌,屬於額外過濾選項 
$int_options = array( 
    "options" => array(
    // 'options' 固定
    "min_range" => 0, 
    // 最小值 
    "max_range" => 100 
    // 最大值 'min_range'和'max_range' 也固定
    )
    ); 
    // 過濾單一變數 即$int 增加額外過濾選項
    if(!filter_var($int, FILTER_VALIDATE_INT, $int_options)) {
        // 輸出:Integer is not valid 
        echo "不在範圍內"."<br>"; 
    } else { 
        echo "在範圍內"."<br>"; 
    }
?>

filter_has_var() 和 filter_input()

filter_has_var(type, variable) 兩個引數必填

引數一:

INPUT_GET

INPUT_POST

INPUT_COOKIE

INPUT_SERVER

INPUT_ENV

引數二:表單裡的命名變數 filter_input(input_type, variable, filter, options) 前兩個引數必填,後兩個可選填,第三個不填則使用預設過濾條件,只判斷是否為字串。
 

<hr> 
<form method="post" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>">
   Email : <input type="text" name="email"> 
   Url: <input type="text" name="url"> 
   <input type="submit" name="submit" value="提交"> 
   </form> 
   <hr> 
   <?php 
   header("content-type:text/html;charset=GBK");
    // 檢查提交表單中是否含 "email"
    if (!filter_has_var(INPUT_POST, "email")) {
        echo "email不可為空<br>";
    } else {
        // 檢查是否為有效郵箱地址
        if (!filter_input(INPUT_POST, "email", FILTER_VALIDATE_EMAIL)) {
            echo "email不是合法郵箱<br>";
        } else {
            echo "email是合法郵箱<br>";
        }
    }
    //filter_has_var判斷post請求引數是否存在
    if (!filter_has_var(INPUT_POST, "url")) {
        echo "url不可為空<br>";
    } else {
        if (!filter_input(INPUT_POST, "url", FILTER_VALIDATE_URL)) {
            echo "url不是合法url<br>";
        } else {
            echo "url是合法url<br>";
        }
    }
 ?>

filter_input_array()過濾多輸入

可能的選項或標誌:

  • FILTER_FLAG_NO_ENCODE_QUOTES - 該標誌不編碼引號
  • FILTER_FLAG_STRIP_LOW - 去除 ASCII 值在 32 以下的字元
  • FILTER_FLAG_STRIP_HIGH - 去除 ASCII 值在 32 以上的字元
  • FILTER_FLAG_ENCODE_LOW - 編碼 ASCII 值在 32 以下的字元
  • FILTER_FLAG_ENCODE_HIGH - 編碼 ASCII 值在 32 以上的字元
  • FILTER_FLAG_ENCODE_AMP - 把 & 字元編碼為 &amp;
  <!--filter_input_array函式-->
   <?php 
   header("content-type:text/html;charset=GBK");
   $name=$age=$email="";
  $filters = array(
   "name" => array( "filter" => FILTER_SANITIZE_STRING ),
   "age" => array( "filter" => FILTER_VALIDATE_INT, 
   "options" => array( "min_range" => 1, "max_range" => 120 ) ), 
   "email" => FILTER_VALIDATE_EMAIL, ); 
   // 符合過濾條件返回原變數否則返回false 'INPUT_GET' 對應表單提交的 method 
   $result = filter_input_array(INPUT_GET, $filters); 
   $name=$result["name"];
   $age=$result["age"];
   $email=$result["email"];
   if (!$result["age"]) {
    echo "Age應該位於 1到120之間.<br>"; 
    } else { 
    echo "age是有效的.<br>";
     } if (!$result["email"]) {
      echo "Email是無效的.<br>"; 
      } else { 
          echo "Email是有效的.<br>"; 
      } if (!$result["name"]) {
       echo "User是無效的.<br>"; 
       } else { 
       echo "User是有效的.<br>"; 
       }
       ?>
  
  
<form method="get" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>">
 Name: <input type="text" name="name" value="<?php echo $name;?>">
 Age: <input type="text" name="age" value="<?php echo $age;?>">
 Email: <input type="text" name="email" value="<?php echo $email;?>">
  <input type="submit" name="submit" value="提交"> 
  </form> 

自定義過濾器callback:

使用 FILTER_CALLBACK 過濾器,可以呼叫自定義的函式,把它作為一個過濾器來使用。這樣,我們就擁有了資料過濾的完全控制權。

您可以建立自己的自定義函式,也可以使用已存在的 PHP 函式。

<?php 
//filter_var函式
header("content-type:text/html;charset=GBK");
function convertSpace($string)
{
    return str_replace("_", ".", $string);
}

$string = "www_baidu_com!";

echo filter_var($string, FILTER_CALLBACK,
    array("options"=>"convertSpace"));
?>

12.json

函式 描述
json_encode 對變數進行 JSON 編碼
json_decode 對 JSON 格式的字串進行解碼,轉換為 PHP 變數
json_last_error 返回最後發生的錯誤

 son_encode:

PHP json_encode() 用於對變數進行 JSON 編碼,該函式如果執行成功返回 JSON 資料,否則返回 FALSE 。

語法:

string json_encode ( $value [, $options = 0 ] )

引數:

  • value: 要編碼的值。該函式只對 UTF-8 編碼的資料有效。
  • options:由以下常量組成的二進位制掩碼:JSON_HEX_QUOT, JSON_HEX_TAG, JSON_HEX_AMP, JSON_HEX_APOS, JSON_NUMERIC_CHECK,JSON_PRETTY_PRINT, JSON_UNESCAPED_SLASHES, JSON_FORCE_OBJECT
<?php 
header("content-type:text/html;charset=GBK");
$arr = array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5);
echo json_encode($arr);
?>

 json_decode:

PHP json_decode() 函式用於對 JSON 格式的字串進行解碼,並轉換為 PHP 變數。

語法:

mixed json_decode ($json_string [,$assoc = false [, $depth = 512 [, $options = 0 ]]])

引數:

  • json_string: 待解碼的 JSON 字串,必須是 UTF-8 編碼資料

  • assoc: 當該引數為 TRUE 時,將返回陣列,FALSE 時返回物件。

  • depth: 整數型別的引數,它指定遞迴深度

  • options: 二進位制掩碼,目前只支援 JSON_BIGINT_AS_STRING 。


<?php
   $json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';

   var_dump(json_decode($json));
   var_dump(json_decode($json, true));
?>