在php开发中,数组转字符串是高频操作,不同的业务场景需要不同的转换方式,比如只需要拼接元素、需要保留键值关系、或者要处理多维数组结构,对应的实现方法各有区别。

一、基础拼接转换方法
1. implode函数
implode是最常用的数组转字符串函数,用于将数组元素按照指定分隔符拼接成字符串,语法为implode(string $separator, array $array),分隔符参数可以省略,默认使用空字符串拼接。
示例代码:
<?php
// 索引数组转字符串
$fruitArr = ['apple', 'banana', 'orange'];
// 用逗号分隔拼接
$str1 = implode(',', $fruitArr);
echo $str1; // 输出 apple,banana,orange
// 省略分隔符,直接拼接
$str2 = implode($fruitArr);
echo $str2; // 输出 applebananaorange
// 关联数组同样适用,只拼接值
$userArr = ['name' => '张三', 'age' => 25, 'city' => '北京'];
$str3 = implode('|', $userArr);
echo $str3; // 输出 张三|25|北京
?>
2. join函数
join函数是implode的别名,功能完全一致,使用方式和参数顺序都相同,开发时可以根据习惯选择使用。
示例代码:
<?php
$numArr = [1, 2, 3, 4, 5];
$str = join('-', $numArr);
echo $str; // 输出 1-2-3-4-5
?>
二、保留结构的转换方法
1. json_encode转换
如果需要保留数组的键值结构、多维数组结构,或者需要传输给前端、存储到文件,可以使用json_encode将数组转为json格式的字符串,转换后可以通过json_decode还原为数组。
示例代码:
<?php
$infoArr = [
'name' => '李四',
'hobby' => ['reading', 'running'],
'score' => [
'math' => 90,
'english' => 85
]
];
// 转为json字符串,中文不转义
$jsonStr = json_encode($infoArr, JSON_UNESCAPED_UNICODE);
echo $jsonStr;
// 输出 {"name":"李四","hobby":["reading","running"],"score":{"math":90,"english":85}}
// 还原为数组
$newArr = json_decode($jsonStr, true);
print_r($newArr);
?>
2. serialize序列化转换
serialize可以将数组序列化为字符串,保留完整的类型和结构信息,适合php内部的临时存储,比如缓存数据场景,还原时使用unserialize即可。
示例代码:
<?php
$dataArr = ['id' => 1001, 'tags' => ['php', 'mysql']];
$serialStr = serialize($dataArr);
echo $serialStr;
// 输出 a:2:{s:2:"id";i:1001;s:4:"tags";a:2:{i:0;s:3:"php";i:1;s:5:"mysql";}}
// 还原数组
$originArr = unserialize($serialStr);
print_r($originArr);
?>
三、自定义拼接格式处理技巧
如果默认的拼接方式不满足需求,比如需要拼接键名和值,或者需要自定义每个元素的格式,可以通过遍历数组自定义拼接逻辑。
示例:拼接键值对格式的字符串
<?php
$configArr = ['host' => '127.0.0.1', 'port' => 3306, 'dbname' => 'test'];
$resultStr = '';
foreach ($configArr as $key => $value) {
$resultStr .= $key . '=' . $value . '&';
}
// 去掉末尾多余的&
$resultStr = rtrim($resultStr, '&');
echo $resultStr; // 输出 host=127.0.0.1&port=3306&dbname=test
?>
示例:多维数组递归拼接
<?php
function multiArrayToString($arr, $separator = ',') {
$str = '';
foreach ($arr as $item) {
if (is_array($item)) {
$str .= multiArrayToString($item, $separator) . $separator;
} else {
$str .= $item . $separator;
}
}
return rtrim($str, $separator);
}
$multiArr = ['a', ['b', 'c'], 'd', ['e', ['f', 'g']]];
echo multiArrayToString($multiArr); // 输出 a,b,c,d,e,f,g
?>
四、方法选择建议
- 如果只是简单拼接一维数组元素,优先使用implode或join,性能更高
- 需要保留数组结构、跨语言传输或者存储,优先使用json_encode
- php内部临时存储、需要保留数据类型,使用serialize
- 需要自定义复杂拼接格式,通过遍历数组手动拼接
需要注意,implode只能处理一维数组的元素拼接,如果直接传入多维数组,只会拼接第一层的元素,子数组会被转为字符串Array,导致结果不符合预期,处理多维数组时需要先递归处理子数组。
phparray_to_stringimplodejoinjson_encode修改时间:2026-06-15 09:09:38