0
{
    "data": [
        {
            "business_type": "bar",
            "business_name": "KKK",
            "number": "1234567",
            "business_id": "test1"
        },
        {
            "business_type": "restauratns",
            "business_name": "KKKK",
            "number": "1234567",
            "business_id": "test2"
        }
    ]
}

PHP代码: -

1)没有工作

foreach ($json_array->data as $obj) {
    echo $obj->business_name;
    echo $obj->business_type;
    echo $obj->business_id;
}

2) 仅获取输出“数据数组”但未获取对象详细信息

foreach ($json_array as $name=>$value) {
    echo "$name: $value\n";
    foreach ($value as $entry) {
        echo '  ' . $entry->business_type;
        echo '  ' . $entry->business_name;
        echo '  ' . $entry->business_id;
        echo '  ' . $entry->number;
    }
}

在此之后,我还尝试使用 print_r 和 var_dump 打印详细信息。

var_dump 的结果是:-

array(1) {
  ["data"]=>
  array(2) {
    [0]=>
    array(4) {
      ["business_type"]=>
      string(3) "bar"
      ["business_name"]=>
      string(3) "KKK"
      ["number"]=>
      string(7) "1234567"
      ["business_id"]=>
      string(5) "test1"
    }
    [1]=>
    array(4) {
      ["business_type"]=>
      string(11) "restauratns"
      ["business_name"]=>
      string(4) "KKKK"
      ["number"]=>
      string(7) "1234567"
      ["business_id"]=>
      string(5) "test2"
    }
  }
}

我试图找到我犯错的地方,但没有任何想法。如果有人有任何想法,请指导我。

4

2 回答 2

2

您显然将 JSON 数据解码为 array,而不是objectjson_decode(..., true)返回数组,如果省略true它返回对象的参数。更改您的代码以期望数组或更改您的解码以返回对象。

于 2013-04-07T03:46:22.263 回答
0

数组.php

<?php
    // $json = json_decode($json_data, true);
    $json = array(
        'data' => array(
            array(
                'bussiness_type' => 'bar',
                'bussiness_name' => 'KKK',
                'number' => '1234567',
                'bussiness_id' => 'test1'
            ),
            array(
                'bussiness_type' => 'restauratns',
                'bussiness_name' => 'KKKK',
                'number' => '1234567',
                'bussiness_id' => 'test2'
            )
         )
    );

    /*
        array(1) {
          ["data"]=>
          array(2) {
            [0]=>
            array(4) {
              ["bussiness_type"]=>
              string(3) "bar"
              ["bussiness_name"]=>
              string(3) "KKK"
              ["number"]=>
              string(7) "1234567"
              ["bussiness_id"]=>
              string(5) "test1"
            }
            [1]=>
            array(4) {
              ["bussiness_type"]=>
              string(11) "restauratns"
              ["bussiness_name"]=>
              string(4) "KKKK"
              ["number"]=>
              string(7) "1234567"
              ["bussiness_id"]=>
              string(5) "test2"
            }
          }
        }
    */

    foreach( $json['data'] as $value )
    {
        echo $value['bussiness_type'] . "\n" 
            . $value['bussiness_name'] . "\n" 
            . $value['number'] . "\n" 
            . $value['bussiness_id'] . "\n\n";
    }
?>

对象.php

<?php
    // $json = json_decode($json_data, true);
    $json = array(
        'data' => array(
            array(
                'bussiness_type' => 'bar',
                'bussiness_name' => 'KKK',
                'number' => '1234567',
                'bussiness_id' => 'test1'
            ),
            array(
                'bussiness_type' => 'restauratns',
                'bussiness_name' => 'KKKK',
                'number' => '1234567',
                'bussiness_id' => 'test2'
            )
         )
    );

    $to_json = json_encode($json);
    $to_obj = json_decode($to_json);
    /*
        object(stdClass)#1 (1) {
          ["data"]=>
          array(2) {
            [0]=>
            object(stdClass)#2 (4) {
              ["bussiness_type"]=>
              string(3) "bar"
              ["bussiness_name"]=>
              string(3) "KKK"
              ["number"]=>
              string(7) "1234567"
              ["bussiness_id"]=>
              string(5) "test1"
            }
            [1]=>
            object(stdClass)#3 (4) {
              ["bussiness_type"]=>
              string(11) "restauratns"
              ["bussiness_name"]=>
              string(4) "KKKK"
              ["number"]=>
              string(7) "1234567"
              ["bussiness_id"]=>
              string(5) "test2"
            }
          }
        }
    */

    foreach( $to_obj->data as $value )
    {
        echo $value->bussiness_type . "\n" 
            . $value->bussiness_name . "\n" 
            . $value->number . "\n" 
            . $value->bussiness_id . "\n\n";
    }

?>
于 2013-04-07T04:20:54.677 回答