李涛自留地
回到顶部
首页 > php学习 > PHP explode() 和 implode() 函数详解:字符串与数组互转

PHP explode() 和 implode() 函数详解:字符串与数组互转

文章目录

PHP 中最常用的两个字符串/数组转换函数就是 explode() 和 implode()。一个把字符串切分成数组,一个把数组拼接成字符串。虽然简单,但实际使用中还是有不少细节和坑。

这篇文章把这两个函数的用法、技巧、常见场景都整理出来。

explode():字符串转数组

explode(separator, string, limit) - 用分隔符把字符串拆成数组。

张三, [1] => 李四, [2] => 王五) ?>

limit 参数的妙用

limit 参数可以限制分割后的数组元素数量,剩余部分全部放到最后一个元素里。这个功能在处理 CSV 数据时特别有用。

<?php
// CSV数据:姓名,年龄,城市,备注1,备注2,备注3
$data = '张三,28,北京,程序员,爱读书,喜欢编程';

// 限制只分割前2次(得到3个元素)
$parts = explode(',', $data, 3);
print_r($parts);
/*
Array
(
    [0] => 张三
    [1] => 28
    [2] => 北京,程序员,爱读书,喜欢编程
)
*/
?>

limit 为负数的情况

<?php
$data = 'a,b,c,d,e';
$parts = explode(',', $data, -1);
print_r($parts);
// Array([0] => a, [1] => b, [2] => c, [3] => d)
// 最后一个元素 e 被去掉了
?>

implode():数组转字符串

implode(glue, pieces) - 用连接符把数组元素拼成字符串。

<?php
$tags = ['php', '服务器', 'wordpress', 'seo'];

// 用逗号连接成字符串
$csv = implode(',', $tags);
echo $csv;
// php,服务器,wordpress,seo

// 用于批量插入数据库
$sql = "INSERT INTO tags (name) VALUES ('" . implode("'), ('", $tags) . "')";
echo $sql;
// INSERT INTO tags (name) VALUES ('php'), ('服务器'), ('wordpress'), ('seo')
?>

实战场景

场景1:处理用户提交的标签

用户用逗号分隔输入标签,存入数据库:

<?php
$user_tags = 'php, javascript, python,';

// 分割并过滤空值
$tags = array_filter(explode(',', $user_tags));
// 去空格
$tags = array_map('trim', $tags);
// 去重
$tags = array_unique($tags);

print_r($tags);
?>

场景2:路径解析

<?php
$filepath = '/home/jason/project/src/main.php';

// 拆分路径
$parts = explode('/', $filepath);
$filename = end($parts);  // 'main.php'
$directory = implode('/', array_slice($parts, 0, -1));
?>

场景3:生成 SQL IN 查询

<?php
$post_ids = [101, 102, 103, 104, 105];

if (!empty($post_ids)) {
    $ids_str = implode(',', array_map('intval', $post_ids));
    $sql = "SELECT * FROM posts WHERE id IN ($ids_str)";
}
?>

相关文章

以下是本系列相关文章:


示意图

图1

图2

图3


若非作者标注皆为李涛自留地原创文章,转载或复制请以超链接形式并注明出处。