Php 这个JSON输出有什么问题?

Php 这个JSON输出有什么问题?,php,json,Php,Json,当我试图从数组回显JSON对象时,它不起作用。在错误日志中,它给了我以下信息: PHP Notice: Trying to get property of non-object in /home/zadmin/test.britishweb.co.uk/patchwork/featuredseries.php on line 48 对于我想回应的每一个物体。这是我的密码: <?php $source = "http://prod.cloud.rockstargames.com/glo

当我试图从数组回显JSON对象时,它不起作用。在错误日志中,它给了我以下信息:

PHP Notice:  Trying to get property of non-object in /home/zadmin/test.britishweb.co.uk/patchwork/featuredseries.php on line 48
对于我想回应的每一个物体。这是我的密码:

<?php

$source = "http://prod.cloud.rockstargames.com/global/SC/events/eventschedule-game-en.json"; // Source URL will be unchanged most likely but placed in a variable just in case.


$ch = curl_init(); // Connect
curl_setopt($ch, CURLOPT_URL, $source);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$data = curl_exec ($ch);
curl_close ($ch); 

$destination = "eventschedule-game-en.json";
$file = fopen($destination, "w+");
file_put_contents($destination, $data);
fclose($file);

$json = file_get_contents($destination);

$obj = json_decode($json, true);

var_dump($obj); // Debug option

?>
然后我就这样做了HTML:

<div class="main_event">
    <p id="name"><?php echo $obj["displayName"]; ?> Now playing on GTA V.</p>

    <h2>Selected Platforms</h2>
    <p id="platforms">The series is currently running on the following platforms:</p>
    <ul>
        <li><?php echo $obj->eventPlatformTypes[0]; ?></li>
        <li><?php echo $obj->eventPlatformTypes[1]; ?></li>
        <li><?php echo $obj->eventPlatformTypes[2]; ?></li>

    </ul>
</div>

现在正在GTA V上播放

选定平台

该系列目前正在以下平台上运行:


您试图以对象而不是数组的形式访问
$obj
。将true传递给
json\u decode()
的第二个参数,这表明返回的对象是数组而不是对象。访问属性的方式与您在此行中访问属性的方式相同:

<p id="name"><?php echo $obj["displayName"]; ?> Now playing on GTA V.</p>
另一个轻微的音符。如果存在数量可变的类型/事件,您可能希望遍历eventPlatformTypes(甚至可能还有多个事件):

    <ul>
        <?php foreach ( $obj["multiplayerEvents"][0]["eventPlatformTypes"] as $platformType ): ?>
        <li><?php echo $platformType; ?></li>
        <?php endforeach; ?>
    </ul>

您试图以对象而不是数组的形式访问
$obj
。将true传递给
json\u decode()
的第二个参数,这表明返回的对象是数组而不是对象。访问属性的方式与您在此行中访问属性的方式相同:

<p id="name"><?php echo $obj["displayName"]; ?> Now playing on GTA V.</p>
另一个轻微的音符。如果存在数量可变的类型/事件,您可能希望遍历eventPlatformTypes(甚至可能还有多个事件):

    <ul>
        <?php foreach ( $obj["multiplayerEvents"][0]["eventPlatformTypes"] as $platformType ): ?>
        <li><?php echo $platformType; ?></li>
        <?php endforeach; ?>
    </ul>

您能否发布
var\u dump($obj)的输出
file\u put\u contents()
不需要单独打开文件。非对象错误是由
$obj->eventPlatformTypes
引起的,当
obj
是一个数组时,可以发布
var\u dump($obj)的输出
file\u put\u contents()
不要求您单独打开文件。您的非对象错误是由
$obj->eventPlatformTypes
引起的,当
obj
是一个数组时,非常感谢您为我清除此错误,并提供更直观的处理eventPlatformTypes的方法。非常感谢!非常感谢您为我澄清这一点,并提供了一种更直观的方式来处理eventPlatformTypes。非常感谢!