想实现一个wordpress后台,跟着阿树工作室的教程学习。自己php基础薄弱,看到利用类实现后台的章节就跟不上了,刚好学到js的极简方法实现一个类,考虑能否在前台用类实现页面,将页面数据汇总成json,统一提交给后台,这样就避开了不熟悉的php语法。
这样一来有一个问题,wp后台中的设置信息变成了json数据,每次提取数据的时候都需要将其解码为数组。多余的数据处理过程势必带来性能上的损耗,json的数组编解码也可能出现异常错误。总之,先尝试了再说。
PHP从5.2版本开始,原生提供json_encode()和json_decode()函数,前者用于编码,后者用于解码。
json_encode()
利用该函数将php的数组或者对象转为json数据,下方代码编码一个数组:
<?php
$arr = array ('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5);
echo json_encode($arr);
//{"a":1,"b":2,"c":3,"d":4,"e":5}
?>
下方代码编码一个对象:
<?php
$test->site = 'ido321.com';
$test->id = 22;
$test->name = 'dwqs';
echo json_encode($test);
//{
// "site":"ido321.com",
// "id":22,
// "name":"dwqs",
//}
?>
json_decode()
该函数主要是对 JSON 格式的字符串进行编码,mixed json_decode ( string $json [, bool $assoc ] ),接受一个 JSON 格式的字符串并且把它转换为 PHP 变量。
<?php
$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';
var_dump(json_decode($json));
var_dump(json_decode($json, true));
?>
通常情况下,json_decode()总是返回一个PHP对象,而不是数组;如果想要强制生成PHP关联数组,json_decode()需要加一个参数true,就能返回关联数组。
实际应用
在wordpress后台设置页尝试提交了一个json数组'August_options',利用get_option()函数取回后对其进行解码,最后输出数组的值。
<?php $options=json_decode(get_option('August_options'),true);?>
<?php echo $options["aa"];?>