zblog保存的自定义字段数据转换为对象调用
浏览:8788 作者:Admin 评论(1)
通常我们做主题或插件的时候,或多或少都会使用自定义字段数据;一般都是保存在xxx_Meta字段下的序列化数据;如果是单独的一个数据的话那我们可以直接调用,如果保存的是数组每次输出数据都会以数组格式调用,如:$data=$article->Metas->zbblog; $data['name']; 这样麻烦而且不高效;所以我们可以转为对象格式调用。
我们先看下面的一个案例,看完应该就差不多明白了;
// 首先这是一段zblog发布文章时保存自定义数据的代码,只摘了其中几段最主要的。 // $zbblog= GetVars('zbblog', 'POST'); // 我们这里以下面这个数组为例; $zbblog = array( array( 'name' => '小明', 'age' => 20, 'sex' => 1 ), array( 'name' => '小红', 'age' => 18, 'sex' => 0, ) ); if(is_array($zbblog)){ $zbblog= json_decode(json_encode($zbblog), FALSE);// 首先把数组编码为json文本,然后把json数据解码,第二个参数为false时返回对象; $article->Metas->zbblog = $zbblog; //保存对象数据,下次读取时就不用转换了; $article->Save(); }
下面就是调用数据,直接以对象形式输出 是不是方便快捷了许多?
$html = ''; if ($data = $article->Metas->zbblog) { foreach ($data as $k => $v) { $html .=' <input type="text" name="zbblog[' . $k . '][name]" value="' . $v->name. '"> <input type="text" name="zbblog[' . $k . '][age]" value="' . $v->age. '"> <input type="text" name="zbblog[' . $k . '][sex]" value="' . $v->sex. '"> '; } echo $html; }