您好,欢迎访问一九零五行业门户网

求助:格式化这样的一个json串,语法该怎么写?()

例如有一个二维数组 
$myarrnews=array();
$myarrnews =explode(||**||, $mystr); //内容来自$mystr,包括多条新闻记录
$myarrline=array();  
$myarrline =explode(||%%||, $myarrnews[$i]);      //$myarrline 是其中的一条记录,包括多个字段
print_r($myarrline);                     //每个新闻各个字段的集合,例如:array ( [0] => 10 [1] => 2166 [2] => 创新。。。
现在需要这样的一个json串,格式为:(暂时设定为每页显示5条)
{
    ret: 0, 
    data: {
        newslist: [
            {
                title: 第1条新闻标题, 
                commentcount: 0, 
                source: 来源, 
                nid: 10, 
                digest: 新闻简介, 
                ptime: 2012-03-28 14:11:43
            }, 
            {
                title: 第2条新闻标题, 
                commentcount: 0, 
                source: 来源, 
                nid: 9, 
                digest: 新闻简介, 
                ptime: 2012-03-28 13:12:56
            }, 
            {
                title: 第3条新闻标题, 
                commentcount: 0, 
                source: 来源, 
                nid: 8, 
                digest: 新闻简介, 
                ptime: 2012-03-28 12:21:11
            }, 
            {
                title: 第4条新闻标题, 
                commentcount: 0, 
                source: 来源, 
                nid: 7, 
                digest: 新闻简介, 
                ptime: 2012-03-28 11:21:00
            }, 
            {
                title: 第5条新闻标题, 
                commentcount: 1, 
                source: 来源, 
                nid: 5, 
                digest: 新闻简介, 
                ptime: 2012-02-18 19:20:01
            }
        ], 
        totalnum: 5
    }, 
    msg: ok
}
//----------------------------
php语法该如何书写呢?请大家帮忙,急用!
回复讨论(解决方案) 俺是php菜鸟,绝对菜的那种,请大家回帖时代码和步骤给的详细些!谢谢了
$mystr 是什么内容,你总要贴出原始数据是什么样吧。
[code=php]再详细点:
$weblink=http://www.xxx.net.cn/news/getnews.asp?cid=4&topnum=10;
 $mystr=file_get_contents($weblink);
 $myarrnews=array();
//拆分分条新闻条件成数组
$myarrnews =explode(||**||, $mystr);
//    print_r ($myarrnews);              //该分类id下前10条数据的集合
 //拆分具体内容条件成数组    
 /*
    下面对采集的数据集合进行描述,就是说每条数据都包括以下的字段信息,而且这些信息已经获取到$myarrnews中了!
0:代表采集信息数量
1:信息原始id号 (新闻分类id号)
2:信息标题
3:信息类别
4:信息内容
5:是否首页图片
6:访问量
7:发布人
8:副标题
9:信息发布时间
 */
$obj->ret=0;
 $newslist=array(newslist=>array());
for ($i=0;$i            $myarrline=array();  
           $myarrline =explode(||%%||, $myarrnews[$i]);      
           print_r($myarrline);                     //每个新闻各个字段的集合,例如:array ( [0] => 10 [1] => 2166 [2] => 创新工会工作 创建模范职工之家 [3] => 学院新闻 [4] =>。。。。
例如:
 if ($myarrline[$i]!=) {   
              $newslist[$i]=>'title'=$myarrline[2];
              $newslist[$i]=>commentcount=0;
              $newslist[$i]=>source=$myarrline[7];
              $newslist[$i]=>nid=$myarrline[1];
              $newslist[$i]=>replycount=0;
              $newslist[$i]=>ptime=$myarrline[9];                  
          }
以下的格式不会写了(上面写的也不对)请大家帮忙补充
请给出真实的 url!
不知道原始信息如何讨论?
抱歉,安全原因,不能给出原始地址!
信息已经给的很详细了!不知道大侠还想要什么信息?
生成的json串只要类似即可
那你至少也得给出一条数据(哪怕是虚构的)
并指出与 json 成员的对应关系
其实大家如果阅读了#3楼的代码,看到这行:
  $newslist[$i]=>'title'=$myarrline[2];
大致就能猜出需求的格式了,而且我只要大概的语法格式,不必一一对应各个字段的(其实,有些字段还需要在改造!)。既然大家想看详细点的信息,我就再解释下。
//---------------------------------------------------------------------------------------------------
$weblink=http://www.xxx.net.cn/news/getnews.asp?cid=4&topnum=5;
 $mystr=file_get_contents($weblink);
 $myarrnews=array();
//拆分分条新闻条件成数组
$myarrnews =explode(||**||, $mystr);
//    print_r ($myarrnews);              //该分类id下前5条数据的集合
 //拆分具体内容条件成数组 
//以上代码可以得到从asp网页中分类cid=4的新闻(如学院新闻)共5条记录
//--------------------------------------------------------------------------------------------------
//接下来的代码中,变量$myarrline为其中的一条新闻记录,该条新闻记录又包括了10个字段,已经获取到值了。其中第2个字段是新闻id号(即nid),[1] => 2166 ,(参考0#楼代码)。其中第3个字段是新闻标题,例如:[2] => 创新工会工作 创建模范职工之家,等等,我就不一一解释了。这条新闻是获取到的5条新闻中的第一条。大家明白了吧!?
           $myarrline=array();  
           $myarrline =explode(||%%||, $myarrnews[$i]);      
           print_r($myarrline);                     //每个新闻各个字段的集合,例如:array ( [0] => 5 [1] => 2166 [2] => 创新工会工作 创建模范职工之家 [3] => 学院新闻 [4] =>。。。。
//--------------------------------------------------------------------
//最终需要转换重组成0#楼的json串,newslist是个数组,包含了5条记录,每条记录都要求显示出title。。。等6个字段。(其实大家不必考虑每个字段对应哪个$myarrline[i]的值,看到3#楼代码 $newslist[$i]=>'title'=$myarrline[2];就全明白了!大家哪怕只写出一个title,我照猫画虎就搞定了!ok?)
累死我了!
$newslist[$i] = array( 'title' => $myarrline[2], 'commentcount' => 0, 'source' => $myarrline[7], 'nid' => $myarrline[1], 'replycount' => 0, 'ptime' => $myarrline[9],);
帮人还帮出毛病来了
首先感谢xuzuning斑竹的回复,不过我真的很菜,只给我这点代码我是搞不定的,我需要的是0#楼json串的完整代码,其中newlist数组中的5条记录用循环实现。
再次感谢!
$ar = arrat( ' ret' => 0, 'data' => array( 'newslist' => $newslist, ),);echo json_encode($ar);
$newslist 的产生 #8 已经示例了,你自己依葫芦画瓢吧
其实我本意是想这样:
//----------------------------------------
$obj->ret=0;
$newlist=array();
$data=array(newslist=>$newlist,totalnum=>5);
for ($i=0;$i 10 [1] => 2166 [2] => 创新工会工作 创建模范职工之家 [3] => 学院新闻 [4] =>
if ($myarrnews[$i]!=) {
//echo no$i;
$newsobj=new news();
$newsobj->settitle($myarrline[2]);
// echo ========>.$newsobj->gettitle();
$newsobj->setcommentcount(0);
$newsobj->setsource($myarrline[7]);
$newsobj->setnid($myarrline[1]);
$newsobj->setreplycount(0);
$newsobj->setptime($myarrline[9]);
$newslist[$i]=>$newsobj; //这里赋值有问题
}
else
{
echo 在当前年度内没有采集到数据!可能是本站没有最新数据信息!;
return;
}
}
$obj->data=$data;
/* echo 总量:.$myarrline[0].
;
echo 原始id:.$myarrline[1].
;
echo 标题:.$myarrline[2].
;
echo 类别:.$myarrline[3].
;
//$bodyneirong=preg_replace(']*?)>','',myarrline[4]);
echo 内容:.$myarrline[4].
;
echo 图片:.$myarrline[5].
;
echo 访问量:.$myarrline[6].
;
echo 发布人:.$myarrline[7].
;
echo 副标题:.$myarrline[8].
;
echo 发布时间:.$myarrline[9].
;
echo ;
*/
$obj->msg =ok;
print_r(json_encode($obj));
$newslist=null;
$obj=null;
?>
//-----------------------------------
$newslist[$i]=>$newsobj; //但是这里赋值有问题!!
另外,虽然我总共只学了2个小时的php,我也知道
$obj->ret=0;

$obj = array(
是有区别的!
$data = array(newslist=>$newlist,totalnum=>5);
显然应该放到for循环的后面赋值而不是前面。
不行啊,还是那一行提示有问题,移动代码也不行:
$obj->ret=0;
$newslist=array();
$data=array(newslist=>$newslist,totalnum=>5);
for ($i=0;$i 10 [1] => 2166 [2] => 创新工会工作 创建模范职工之家 [3] => 学院新闻 [4] =>
if ($myarrnews[$i]!=) {
echo no$i;
$newsobj=new news();
$newsobj->settitle($myarrline[2]);
echo ========>.$newsobj->gettitle(); //此处可以取到title值
$newsobj->setcommentcount(0);
$newsobj->setsource($myarrline[7]);
$newsobj->setnid($myarrline[1]);
$newsobj->setreplycount(0);
$newsobj->setptime($myarrline[9]);
$newslist[$i]=>$newsobj; //这里赋值有问题 ,提示parse error: parse error in
}
else
{
echo 在当前年度内没有采集到数据!可能是本站没有最新数据信息!;
return;
}
}
$obj->data=$data;
/* echo 总量:.$myarrline[0].
;
echo 原始id:.$myarrline[1].
;
echo 标题:.$myarrline[2].
;
echo 类别:.$myarrline[3].
;
//$bodyneirong=preg_replace(']*?)>','',myarrline[4]);
echo 内容:.$myarrline[4].
;
echo 图片:.$myarrline[5].
;
echo 访问量:.$myarrline[6].
;
echo 发布人:.$myarrline[7].
;
echo 副标题:.$myarrline[8].
;
echo 发布时间:.$myarrline[9].
;
echo ;
*/
$obj->msg =ok;
print_r(json_encode($obj));
for ($i=0;$i 10 [1] => 2166 [2] => 创新工会工作 创建模范职工之家 [3] => 学院新闻 [4] =>
if ($myarrnews[$i]!=) {
$newslistarr=array('title' => $myarrline[2], 'commentcount' => 0, 'source' => $myarrline[7], 'nid' => $myarrline[1], 'replycount' => 0, 'ptime' => $myarrline[9], );
$newslist[$i]=$newslistarr;
}
//--------------------------------------------
这样也不行,格式化后结果:{ret:0,data:{newslist:[],totalnum:5},msg:ok} 数组是空的。
无奈了,php语法究竟怎么写呢?
$newslist[$i] = $newsobj
你的多了个>
$newslist[$i] = $newsobj
你的多了个>
是的,我这里写错了,不过改正之后,还是不行
格式化后结果:{ret:0,data:{newslist:[],totalnum:5},msg:ok} 数组是空的。
我已经放弃使用对象了,php里对象转数组效率太低!
终于整出来了!是php二维数组的语法格式不会啊,绕了很多弯路。十分感谢ohmygirl的帮忙!
把代码贴出来,供大家参考下:
//---------------------------------------------------------------
1000) { die('possible deep recursion attack'); } foreach ($array as $key => $value) { if (is_array($value)) { arrayrecursive($array[$key], $function, $apply_to_keys_also); } else { $array[$key] = $function($value); } if ($apply_to_keys_also && is_string($key)) { $new_key = $function($key); if ($new_key != $key) { $array[$new_key] = $array[$key]; unset($array[$key]); } } } $recursive_counter--;} /************************************************************** * * 将数组转换为json字符串(兼容中文) * @param array $array 要转换的数组 * @return string 转换得到的json字符串 * @access public * *************************************************************/function json($array) { arrayrecursive($array, 'urlencode', true); $json = json_encode($array); return urldecode($json);}?> 校园移动app 导航---【采集结果】2:
2166 [2] => 创新工会工作 创建模范职工之家 [3] => 学院新闻 [4] => if ($myarrnews[$i]!=) { echo no$i; $newslist[$i]['title']=$myarrline[2] ; $newslist[$i]['commentcount']=0 ; $newslist[$i]['source']=$myarrline[7] ; $newslist[$i]['nid']=$myarrline[1] ; $newslist[$i]['replycount']=0; $newslist[$i]['ptime']=$myarrline[9] ; } else { echo 在当前年度内没有采集到数据!可能是本站没有最新数据信息!; } } $data=array(newslist=>$newslist,totalnum=>5); $obj[data]=$data; $obj[msg] =ok; print_r(json($obj)); $newslist=null; $obj=null; ?>

其它类似信息

推荐信息