你在网上填个快递单、点个外卖、甚至刷个天气预报,后台其实都在悄悄跑着 PHP 和 JSON —— 一个负责干活,一个负责传话。
JSON 是啥?像微信发消息一样简单
JSON 就是种轻量级的数据格式,长得像这样:
{"name": "小王", "city": "杭州", "score": 92}看着像 JS 对象,但其实它跨语言通用。PHP 不认 JS,但认 JSON 字符串,就像你发微信语音,对方不用懂录音原理,也能听清内容。PHP 怎么把 JSON 变成能用的数组?
比如收到手机 App 发来的一条订单信息:
$json_str = '{"order_id": "ORD1001", "items": [{"name": "鸡蛋", "num": 6}, {"name": "牛奶", "num": 2}]}';
$data = json_decode($json_str, true); // 第二个参数 true 表示转成关联数组echo $data['order_id']; // 输出:ORD1001
echo $data['items'][0]['name']; // 输出:鸡蛋
注意:如果漏掉 true,默认返回对象,就得写 $data->order_id,对新手容易绕晕,日常用数组更顺手。反过来,PHP 数据怎么打包发出去?
你查完库存、算好价格,得把结果告诉前端页面:
$result = [
'status' => 'success',
'total' => 38.5,
'items' => ['苹果', '香蕉']
];
echo json_encode($result); // 输出:{"status":"success","total":38.5,"items":["苹果","香蕉"]}遇到中文乱码?加个选项:json_encode($result, JSON_UNESCAPED_UNICODE),不然“苹果”可能变成“\u82f9\u679c”。出错了怎么办?别让页面白屏
不是所有 JSON 都规规矩矩。用户手抖多打个逗号,或后端接口临时抽风,返回空字符串,json_decode 就会返回 null。
加个保险:
$data = json_decode($json_str, true);
if (json_last_error() !== JSON_ERROR_NONE) {
die('数据格式不对,请检查');
}这招在接第三方天气接口、支付回调时特别管用——别人给的数据,信一半,验一遍。说到底,PHP 处理 JSON 就像收发快递:你不用造货车,也不用修路,只要会看单、会填单,活儿就稳了。