CURL后的结果解析成数组问题 因为我想将得到的结果,再插入到数据库,就要用到foreach($arr as $f)但是,不是array形式的就没办法了 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我的目的就是,有a,b两个站,a站上传了很多东西也有很多表,b站要用到a站的1,2两个表,我就想去获得a的1,2表,然后插入到b站的数据库里,所以在a站有http://www.cits-sz.net/api/index.php这个文件,然后在b站用client.php去获取进行相关的操作。 那你就再 json_decode 一次$s = '{"11":{"l_id":"11","l_title":"CITS-香港观光一天游【品质纯玩】"},"12":{"l_id":"12","l_title":"test"}}';print_r(json_decode($s,1));Array( [11] => Array ( [l_id] => 11 [l_title] => CITS-香港观光一天游【品质纯玩】 ) [12] => Array ( [l_id] => 12 [l_title] => test )) 很奇怪啊,我用这一句,curl_setopt($ch,CURLOPT_URL,'http://www.cits-sz.net/api/index.php');显示的就是序列化的用这一句curl_setopt($ch,CURLOPT_URL,'localhost/szgl/api/index.php');这是本地就正常 为什么本地和上传到服务得到的结果不同呢??在本地就是array,在服务器就变成string了 访问 http://www.cits-sz.net/api/index.php得:无权限访问我不好说什么了 直接访问这个不行的,后面有一个key的,是这个http://www.cits-sz.net/api/index.php?key=01f34958ba730edc2ca30d65245dd6a0 我把这个当成客户端的,暂时测试,地址为http://www.cits-sz.net/api/client.php,里面的代码<?phpinclude("../includes/application_top.php");$key='01f34958ba730edc2ca30d65245dd6a0';$curlPost='key='.urlencode($key);$ch=curl_init();curl_setopt($ch,CURLOPT_URL,'http://www.cits-sz.net/api/index.php');//(1)//curl_setopt($ch,CURLOPT_URL,'http://localhost/szgl/api/index.php');//(2)curl_setopt($ch,CURLOPT_HEADER,0);curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);curl_setopt($ch,CURLOPT_POST,1);curl_setopt($ch,CURLOPT_POSTFIELDS,$curlPost);$data=curl_exec($ch);curl_close($ch);echo $a=json_decode($data,TRUE);//echo gettype($json);/*foreach($a as $f){ echo $f["l_title"];}*/?>用(2)在本地就可以是array,用(1)就不行了,就是原始的信息。 api/index.php文件的代码如下:<?phpinclude("../includes/application_top.php");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--;}function JSON($array){ arrayRecursive($array, 'urlencode', true); $json = json_encode($array); return urldecode($json);}$key=Reqs("key");if ($key<>'01f34958ba730edc2ca30d65245dd6a0'){ echo '无权限访问';exit;}$sql='select l_id,l_title from '.TAB_TRAVEL_LINE.' order by l_id';$rsline=$mydb->query($sql,2);while ($fline=$rsline->movenext()){ $data_line[]=$fline;}//上面那几句是自己的读取数据的echo $a=JSON($data_line);?> $key='01f34958ba730edc2ca30d65245dd6a0';$curlPost='key='.urlencode($key);$ch=curl_init();curl_setopt($ch,CURLOPT_URL,'http://www.cits-sz.net/api/index.php');//(1)curl_setopt($ch,CURLOPT_HEADER,0);curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);curl_setopt($ch,CURLOPT_POST,1);curl_setopt($ch,CURLOPT_POSTFIELDS,$curlPost);$data=curl_exec($ch);curl_close($ch);print_r(json_decode(substr($data, 3), 1));//去掉 BOM 头后再解码Array( [0] => Array ( [l_id] => 11 [l_title] => CITS-香港观光一天游【品质纯玩】 ) [1] => Array ( [l_id] => 12 [l_title] => test )) 非常感谢版主xuzuning,问题完美解决,好人一生平安。 所以你一定不要有 BOM 头这样事情就简单了 php PHP的一段登陆代码 不明白这段代码alert()执行两次 关于json重mysql读取数据问题 高手请进,有没有关于php的免费空间???? 想问一个php+asp的奇怪问题! 使用PHP4中的 IntegratedTemplate类实现HTML和PHP代码分离--教程 一个愚蠢的问题什么是session,session能干什么用,详细些好吗 一个创建数据库的问题: 初学php,怎么才能将留言按照原来的格式显示出来? 请教CI框架如何制作一篇长文章的分页? 新人,怎么知道一个用户访问过该网站两次了呢
print_r(json_decode($s,1));Array
(
[11] => Array
(
[l_id] => 11
[l_title] => CITS-香港观光一天游【品质纯玩】
) [12] => Array
(
[l_id] => 12
[l_title] => test
))
用这一句curl_setopt($ch,CURLOPT_URL,'localhost/szgl/api/index.php');这是本地就正常
得:
无权限访问我不好说什么了
是这个
http://www.cits-sz.net/api/index.php?key=01f34958ba730edc2ca30d65245dd6a0
http://www.cits-sz.net/api/client.php,里面的代码<?php
include("../includes/application_top.php");
$key='01f34958ba730edc2ca30d65245dd6a0';
$curlPost='key='.urlencode($key);
$ch=curl_init();
curl_setopt($ch,CURLOPT_URL,'http://www.cits-sz.net/api/index.php');//(1)
//curl_setopt($ch,CURLOPT_URL,'http://localhost/szgl/api/index.php');//(2)
curl_setopt($ch,CURLOPT_HEADER,0);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_POST,1);
curl_setopt($ch,CURLOPT_POSTFIELDS,$curlPost);
$data=curl_exec($ch);
curl_close($ch);
echo $a=json_decode($data,TRUE);
//echo gettype($json);
/*foreach($a as $f){
echo $f["l_title"];
}*/
?>用(2)在本地就可以是array,用(1)就不行了,就是原始的信息。
include("../includes/application_top.php");
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--;
}
function JSON($array){
arrayRecursive($array, 'urlencode', true);
$json = json_encode($array);
return urldecode($json);
}$key=Reqs("key");
if ($key<>'01f34958ba730edc2ca30d65245dd6a0'){
echo '无权限访问';exit;
}
$sql='select l_id,l_title from '.TAB_TRAVEL_LINE.' order by l_id';
$rsline=$mydb->query($sql,2);
while ($fline=$rsline->movenext()){
$data_line[]=$fline;
}
//上面那几句是自己的读取数据的
echo $a=JSON($data_line);
?>
$curlPost='key='.urlencode($key);
$ch=curl_init();
curl_setopt($ch,CURLOPT_URL,'http://www.cits-sz.net/api/index.php');//(1)
curl_setopt($ch,CURLOPT_HEADER,0);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_POST,1);
curl_setopt($ch,CURLOPT_POSTFIELDS,$curlPost);
$data=curl_exec($ch);
curl_close($ch);
print_r(json_decode(substr($data, 3), 1));//去掉 BOM 头后再解码Array
(
[0] => Array
(
[l_id] => 11
[l_title] => CITS-香港观光一天游【品质纯玩】
) [1] => Array
(
[l_id] => 12
[l_title] => test
))
非常感谢版主xuzuning,问题完美解决,好人一生平安。
这样事情就简单了