求助:格式化这样的一个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 =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
$myarrline=array();
$myarrline =explode("||%%||", $myarrnews[$i]);
print_r($myarrline); //每个新闻各个字段的集合,例如:Array ( [0] => 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('<\s*img([^>]*?)>','',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
$myarrline=array();
$myarrline =explode("||%%||", $myarrnews[$i]);
print_r($myarrline); //每个新闻各个字段的集合,例如:Array ( [0] => 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('<\s*img([^>]*?)>','',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
$myarrline=array();
$myarrline =explode("||%%||", $myarrnews[$i]);
print_r($myarrline); //每个新闻各个字段的集合,例如:Array ( [0] => 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的帮忙!
把代码贴出来,供大家参考下:
//---------------------------------------------------------------
<?php//数据库信息编码的设置header("Content-type: text/html; charset=utf-8");?> <?php/************************************************************** * * 使用特定function对数组中所有元素做处理 * @param string &$array 要处理的字符串 * @param string $function 要执行的函数 * @return boolean $apply_to_keys_also 是否也应用到key上 * @access public * *************************************************************/function arrayRecursive(&$array, $function, $apply_to_keys_also = false){ static $recursive_counter = 0; if (++$recursive_counter > 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);}?><html> <head> <title>校园移动APP </title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> </head> <body leftmargin="0" topmargin="0" marginwidth="0" marginheight="0"> <table width="890" border="0" cellpadding="4" cellspacing="3" align="left" style="font-size:13px"> <tr><td> <hr>导航---【采集结果】2: <br> <br> <br> <br><?php //信息采集地址,参数是默认采集当前年份下10条信息 系统限制到最大50条信息 $weblink="http://newinfor.lnmec.net.cn/news/getnews.asp?lx=74&topnum=5"; // echo $weblink; $mystr=file_get_contents($weblink);//每次10条! $myarrnews=array(); //拆分分条新闻条件成数组 $myarrnews =explode("||**||", $mystr); // print_r ($myarrnews); //该分类ID下前10条数据的集合 //拆分具体内容条件成数组 /* 下面对采集的数据集合进行描述 0:代表采集信息数量 1:信息原始ID号 (新闻分类ID号) 2:信息标题 3:信息类别 4:信息内容 5:是否首页图片 6:访问量 7:发布人 8:副标题 9:信息发布时间 */ $obj=array(); $obj["ret"]=0; $newslist=array(); for ($i=0;$i<count($myarrnews);$i++){ echo "-----------------"; $myarrline=array(); $myarrline =explode("||%%||", $myarrnews[$i]); print_r($myarrline); //每个新闻各个字段的集合,例如:Array ( [0] => 10 [1] => 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; ?> </td> </tr> </table> </body></html>

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











종종 키워드와 추적 매개 변수로 혼란스러워하는 긴 URL은 방문자를 방해 할 수 있습니다. URL 단축 스크립트는 솔루션을 제공하여 소셜 미디어 및 기타 플랫폼에 이상적인 간결한 링크를 만듭니다. 이 스크립트는 개별 웹 사이트 a에 유용합니다

Instagram은 2012 년 Facebook에서 유명한 인수에 이어 타사 사용을 위해 두 개의 API 세트를 채택했습니다. Instagram Graph API 및 Instagram Basic Display API입니다. 개발자는

Laravel은 직관적 인 플래시 방법을 사용하여 임시 세션 데이터 처리를 단순화합니다. 응용 프로그램에 간단한 메시지, 경고 또는 알림을 표시하는 데 적합합니다. 데이터는 기본적으로 후속 요청에만 지속됩니다. $ 요청-

이것은 Laravel 백엔드가있는 React Application을 구축하는 데있어 시리즈의 두 번째이자 마지막 부분입니다. 이 시리즈의 첫 번째 부분에서는 기본 제품 목록 응용 프로그램을 위해 Laravel을 사용하여 편안한 API를 만들었습니다. 이 튜토리얼에서는 Dev가 될 것입니다

Laravel은 간결한 HTTP 응답 시뮬레이션 구문을 제공하여 HTTP 상호 작용 테스트를 단순화합니다. 이 접근법은 테스트 시뮬레이션을보다 직관적으로 만들면서 코드 중복성을 크게 줄입니다. 기본 구현은 다양한 응답 유형 단축키를 제공합니다. Illuminate \ support \ Facades \ http를 사용하십시오. http :: 가짜 ([ 'google.com'=> 'Hello World', 'github.com'=> [ 'foo'=> 'bar'], 'forge.laravel.com'=>

PHP 클라이언트 URL (CURL) 확장자는 개발자를위한 강력한 도구이며 원격 서버 및 REST API와의 원활한 상호 작용을 가능하게합니다. PHP CURL은 존경받는 다중 프로모토콜 파일 전송 라이브러리 인 Libcurl을 활용하여 효율적인 execu를 용이하게합니다.

고객의 가장 긴급한 문제에 실시간 인스턴트 솔루션을 제공하고 싶습니까? 라이브 채팅을 통해 고객과 실시간 대화를 나누고 문제를 즉시 해결할 수 있습니다. 그것은 당신이 당신의 관습에 더 빠른 서비스를 제공 할 수 있도록합니다.

2025 PHP Landscape Survey는 현재 PHP 개발 동향을 조사합니다. 개발자와 비즈니스에 대한 통찰력을 제공하는 프레임 워크 사용, 배포 방법 및 과제를 탐색합니다. 이 조사는 현대 PHP Versio의 성장을 예상합니다
