PHP数组存库需转字符串:一、serialize/unserialize保留类型;二、json_encode/decode跨语言兼容;三、拆分到关联表符合范式;四、implode/explode仅适用简单一维数组。

如果您需要将 PHP 中的数组数据保存到数据库中,由于数据库字段通常不直接支持数组类型,必须通过序列化或转换为字符串形式进行存储。以下是几种可行的技术方案:
一、使用 serialize() 和 unserialize() 进行序列化存储
PHP 提供了内置函数 serialize() 将数组转换为可存储的字符串格式,读取时用 unserialize() 恢复为原始数组。该方式保留完整的数据类型与结构,适用于需严格还原数组内容的场景。
1、定义待存储的数组,例如:$data = ['name' => '张三', 'age' => 28, 'hobbies' => ['读书', '游泳']]。
2、调用 serialize($data) 得到字符串,如 'a:3:{s:4:"name";s:6:"张三";s:3:"age";i:28;s:7:"hobbies";a:2:{i:0;s:6:"读书";i:1;s:6:"游泳";}}'。
立即学习“PHP免费学习笔记(深入)”;
3、将该字符串插入数据库 VARCHAR 或 TEXT 类型字段中,例如执行 SQL:INSERT INTO users (profile) VALUES ('a:3:{...}') 。
4、查询后使用 unserialize($row['profile']) 恢复为关联数组,可直接使用 $arr['name'] 访问。
二、使用 json_encode() 和 json_decode() 转换为 JSON 字符串
JSON 格式具有跨语言兼容性与可读性优势,适合需与其他系统交互或前端直接解析的场景。PHP 数组经 json_encode() 转为标准 JSON 字符串,读取时用 json_decode($str, true) 转回关联数组。
1、准备数组:$data = ['status' => 'active', 'tags' => ['php', 'mysql', 'web']]。
2、执行 json_encode($data),输出结果为:{"status":"active","tags":["php","mysql","web"]}。
3、将该 JSON 字符串存入数据库 TEXT 字段,注意确保数据库字符集为 utf8mb4 以支持 emoji 和中文。
4、读取后调用 json_decode($row['config'], true),第二个参数 true 确保返回数组而非对象。
标签: mysql php js 前端 json 字符串数组
还木有评论哦,快来抢沙发吧~