CURL后的结果解析成数组问题

cg20 2014-05-13 10:59:00
index.php,echo json_encode后的结果为:
{"11":{"l_id":"11","l_title":"CITS-香港观光一天游【品质纯玩】"},"12":{"l_id":"12","l_title":"test"}}

然后客户端代码(client.php)如下:

$curlPost='key='.urlencode($key);
$ch=curl_init();
curl_setopt($ch,CURLOPT_URL,'http://www.cits-sz.net/api/index.php');
curl_setopt($ch,CURLOPT_HEADER,0);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
curl_setopt($ch,CURLOPT_POST,1);
curl_setopt($ch,CURLOPT_POSTFIELDS,$curlPost);
$data=curl_exec($ch);
curl_close($ch);
echo json_decode($data,true);

得到的结果也是
{"11":{"l_id":"11","l_title":"CITS-香港观光一天游【品质纯玩】"},"12":{"l_id":"12","l_title":"test"}}

请问要如何才能将其变成如下的方式呢,谢谢了
Array
(
[11] => Array
(
[l_id] => 11
[l_title] => CITS-香港观光一天游【品质纯玩】
)

[12] => Array
(
[l_id] => 12
[l_title] => test
)

)


...全文
566 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuzuning 2014-05-13
  • 打赏
  • 举报
回复
访问 http://www.cits-sz.net/api/index.php 得: 无权限访问 我不好说什么了
cg20 2014-05-13
  • 打赏
  • 举报
回复
为什么本地和上传到服务得到的结果不同呢??在本地就是array,在服务器就变成string了
cg20 2014-05-13
  • 打赏
  • 举报
回复
引用 3 楼 xuzuning 的回复:
很奇怪啊,我用这一句,curl_setopt($ch,CURLOPT_URL,'http://www.cits-sz.net/api/index.php');显示的就是序列化的 用这一句curl_setopt($ch,CURLOPT_URL,'localhost/szgl/api/index.php');这是本地就正常
xuzuning 2014-05-13
  • 打赏
  • 举报
回复
那你就再 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
        )

)

cg20 2014-05-13
  • 打赏
  • 举报
回复
引用 1 楼 cg20 的回复:
因为我想将得到的结果,再插入到数据库,就要用到 foreach($arr as $f) 但是,不是array形式的就没办法了
我的目的就是,有a,b两个站,a站上传了很多东西也有很多表,b站要用到a站的1,2两个表,我就想去获得a的1,2表,然后插入到b站的数据库里,所以在a站有http://www.cits-sz.net/api/index.php这个文件,然后在b站用client.php去获取进行相关的操作。
cg20 2014-05-13
  • 打赏
  • 举报
回复
因为我想将得到的结果,再插入到数据库,就要用到 foreach($arr as $f) 但是,不是array形式的就没办法了
cg20 2014-05-13
  • 打赏
  • 举报
回复
引用 12 楼 xuzuning 的回复:
所以你一定不要有 BOM 头 这样事情就简单了
受教了,谢谢。
xuzuning 2014-05-13
  • 打赏
  • 举报
回复
所以你一定不要有 BOM 头 这样事情就简单了
cg20 2014-05-13
  • 打赏
  • 举报
回复
引用 10 楼 xuzuning 的回复:
$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,问题完美解决,好人一生平安。
xuzuning 2014-05-13
  • 打赏
  • 举报
回复
$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
        )

)
cg20 2014-05-13
  • 打赏
  • 举报
回复
引用 6 楼 xuzuning 的回复:
访问 http://www.cits-sz.net/api/index.php 得: 无权限访问 我不好说什么了
api/index.php文件的代码如下:

<?php
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);
?>
cg20 2014-05-13
  • 打赏
  • 举报
回复
引用 6 楼 xuzuning 的回复:
访问 http://www.cits-sz.net/api/index.php 得: 无权限访问 我不好说什么了
我把这个当成客户端的,暂时测试,地址为 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)就不行了,就是原始的信息。
cg20 2014-05-13
  • 打赏
  • 举报
回复
引用 6 楼 xuzuning 的回复:
访问 http://www.cits-sz.net/api/index.php 得: 无权限访问 我不好说什么了
直接访问这个不行的,后面有一个key的, 是这个 http://www.cits-sz.net/api/index.php?key=01f34958ba730edc2ca30d65245dd6a0

21,890

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧