php函数直接传数组最简单;url和表单通过方括号命名让php自动解析为数组;跨请求时用json_encode/serialize序列化,http_build_query可生成查询字符串。

在 PHP 中传递数组参数非常常见,方式取决于你是在函数调用、URL 请求、表单提交,还是跨脚本(如 cURL、CLI)中使用。核心原则是:PHP 原生支持数组作为函数参数,但通过 HTTP 传输时需序列化或结构化处理。
函数内部直接传数组(最简单)
PHP 函数天然支持数组作为参数,无需额外操作:
function printUserNames($users) {
foreach ($users as $user) {
echo $user['name'] . "\n";
}
}
$people = [
['name' => '张三', 'age' => 25],
['name' => '李四', 'age' => 30]
];
printUserNames($people); // 直接传入,正常运行
注意:如果想让函数接受任意数量的数组(或混合参数),可用 ...$array 实现可变参数:
function mergeArrays(...$arrays) { return array_merge(...$arrays); }- 调用:
mergeArrays([1,2], [3,4], [5]);
通过 URL 传递数组(GET)
浏览器地址栏不直接支持“数组”,但可通过命名约定让 PHP 自动解析为数组:
- 写法:
?fruits[]=apple&fruits[]=banana&fruits[]=cherry - PHP 自动识别:
$_GET['fruits']是数组['apple','banana','cherry'] - 带键名也支持:
?user[name]=张三&user[age]=25→$_GET['user']是['name'=>'张三','age'=>25]
⚠️ 注意:URL 长度有限制,复杂/大数组不建议用 GET;中文需确保 UTF-8 编码并用 urlencode() 处理值。
通过表单提交数组(POST)
HTML 表单中使用方括号命名,PHP 会自动组装为数组:
提交后,$_POST['hobbies'] 是选中的值组成的数组,$_POST['profile'] 是关联数组。无需手动解析。
跨请求或存储时序列化数组
当需把数组存入数据库、Session、Cookie 或传给其他语言服务时,常用序列化:
-
serialize($arr)→ 返回字符串(含类型信息),PHP 内部推荐,但不通用 -
json_encode($arr)→ 返回 JSON 字符串(轻量、跨语言),更常用 - 还原用:
unserialize($str)或json_decode($str, true)
示例:
$data = ['id' => 123, 'tags' => ['php','web']];
$json = json_encode($data); // '{"id":123,"tags":["php","web"]}'
file_put_contents('cache.json', $json);
// 后续读取
$restored = json_decode(file_get_contents('cache.json'), true);
✅ 小技巧:用 http_build_query() 把数组转成 URL 查询字符串(适合拼接 POST body 或日志记录)。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











