首頁  >  文章  >  後端開發  >  php中get方式可以傳數組嗎

php中get方式可以傳數組嗎

青灯夜游
青灯夜游原創
2023-01-29 19:31:463729瀏覽

可以。 URL是可傳遞關聯數組,也可傳遞下標數組;而PHP中可以利用http_build_query()函數來透過get方式在URL中傳遞數組。 http_build_query()用於從關聯(或索引)陣列產生URL編碼的查詢字串,語法「http_build_query($query_data,$numeric_prefix,$arg_separator,$enc_type)」。

php中get方式可以傳數組嗎

本教學操作環境:windows7系統、PHP8版、DELL G3電腦

PHP下利用get方式在URL中傳遞數組

在URL可以傳遞關聯數組,也可傳遞下標數組。

最簡單的方式就是使用PHP 自帶的http_build_query()函數

$parameters = [
'user' => array(
        'name' => 'Bob Smith',
        'age'  => 47,
        'sex'  => 'M',
        'dob'  => '5/12/1956'
    ),
    'pastimes' => array('golf', 'opera', 'poker', 'rap'),
    'children' => array(
        'bobby' => array('age'=>12, 'sex'=>'M'),
        'sally' => array('age'=>8, 'sex'=>'F')
    ),
    'CEO'
];

// 这里两种数组的方式能够进行混用定义,没有问题

http_build_query($data);
// 注意这里的结果会将参数中的特殊字符进行转义形成最终的结果查询串

还有就是直接进行参数拼接

? 申明開始傳遞參數,用&連接各個參數

eg.

https://www.baidu.com?a=1&b=2&c=3

對於如果希望傳遞陣列可以使用以下方式:

https://www.baidu.com?a[0]=0&a[1]=1&a[2]=2&a[3]=3&a[4]=4
https://www.baidu.com?a[q]=0&a[w]=1&a[e]=2&a[r]=3&a[t]=4

#注意這裡的方括號需要進行轉義,否則可能出現傳遞錯誤的情況。

擴充知識:http_build_query()介紹

http_build_query()函數是PHP中的內建函數,用於從關聯(或索引)陣列產生URL編碼的查詢字串。

用法:

string http_build_query( $query_data, $numeric_prefix, $arg_separator, $enc_type = PHP_QUERY_RFC1738 )

參數:函數接受上述和以下所述的四個參數

  • $query_data: 此參數保存包含下列屬性的陣列或物件:
    • 它可以是一維陣列或多維數組。
    • 如果$query_data是對象,則僅將公共屬性合併到結果中。
  • $numeric_prefix:如果在基本陣列中使用了數字索引,則使用此參數,它將只在基本陣列中元素的數字索引之前。
  • $arg_separator:它用於分隔參數,但可以透過指定此參數來覆寫它。
  • $enc_type:其預設值為PHP_QUERY_RFC1738。

傳回值:它傳回URL編碼的字串。

以下範例程式旨在說明PHP中的http_build_query()函數:

程式1:

<?php 
$info = array( 
    'sudo' => 'placement', 
    'CPP' => 'course', 
    'FORK' => 'C', 
); 
  
echo http_build_query($info) . "#"; 
echo http_build_query($info, '', '&'); 
  
?>

輸出:

sudo=placement&CPP=course&FORK=C#sudo=placement&CPP=course&FORK=C

程式2:

<?php 
$info = array('geeks', 'gfg' => 'sudo', 'placement' => 'hypertext processor'); 
  
echo http_build_query($info) . "$"; 
echo http_build_query($info, 'myvar_'); 
?>

輸出:

0=geeks&gfg=sudo&placement=hypertext+processor$myvar_0=geeks&gfg=sudo&placement=hypertext+processor

推薦學習:《PHP影片教學

以上是php中get方式可以傳數組嗎的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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