在 PHP 中,可以使用多種方法來傳遞陣列。本文將介紹 PHP 中常用的三種傳數組的方法:GET、POST 和 SESSION。
GET 方法是傳遞資料最簡單的方法之一。它將資料透過 URL 參數傳遞給伺服器,由伺服器在網頁中取得資料。在傳遞數組時,需要將數組轉換為字串,並將其作為參數傳遞。
如下是將陣列轉換為 GET 參數的方法:
$array = array("name" => "小明", "age" => 18, "gender" => "男"); $query_str = http_build_query($array);
使用 http_build_query()
函數將陣列轉換為查詢字串。呼叫函數後,$query_str
變數將包含以下字串:
name=%E5%B0%8F%E6%98%8E&age=18&gender=%E7%94%B7
可以將這個字串追加到URL 後,以GET 方法傳遞陣列資料:
$url = "result.php?" . $query_str; header("Location: $url");
在伺服器端,可以使用$_GET
陣列取得傳遞的參數,將查詢字串解碼為陣列:
if(isset($_GET["name"]) && isset($_GET["age"]) && isset($_GET["gender"])) { $name = $_GET["name"]; $age = $_GET["age"]; $gender = $_GET["gender"]; $array = array("name" => urldecode($name), "age" => $age, "gender" => urldecode($gender)); }
使用urldecode()
函數解碼透過GET 方法傳遞的字串。
POST 方法傳遞數組相對於GET 方法更為安全,因為資料不會在URL 中傳遞,而是將資料作為請求的正文傳遞給伺服器。在傳遞陣列時,需要將陣列轉換為 JSON 格式,並使用 json_encode()
函數將其編碼為字串。
如下是使用POST 方法傳遞陣列的方法:
$array = array("name" => "小明", "age" => 18, "gender" => "男"); $post_data = array("data" => json_encode($array)); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "http://example.com/result.php"); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $result = curl_exec($ch); curl_close($ch);
在伺服器端,可以使用file_get_contents()
函數讀取POST 請求傳遞的資料:
if(isset($_POST["data"])) { $json_str = $_POST["data"]; $array = json_decode($json_str, true); }
使用json_decode()
函數將字串解碼為陣列。
SESSION 方法是一種在伺服器端儲存變數的方法。使用 SESSION 方法傳遞數組需要先將數組儲存到 SESSION 中,然後在下一次請求中取得儲存的變數。
如下是使用SESSION 方法傳遞陣列的方法:
$array = array("name" => "小明", "age" => 18, "gender" => "男"); session_start(); $_SESSION["my_array"] = $array;
在下次要求中,可以使用下列程式碼取得儲存在SESSION 中的陣列:
session_start(); $array = $_SESSION["my_array"];
可以使用SESSION方法傳遞任意類型的數據,因為SESSION 變數可以儲存整個數組物件。
本文介紹了 PHP 中傳遞陣列的幾種常見方法。在實際應用中,可以根據具體需求選擇適當的方法傳遞資料。
以上是php如何傳數組的詳細內容。更多資訊請關注PHP中文網其他相關文章!