Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用php区分两个不同的JSON对象_Php_Json - Fatal编程技术网

使用php区分两个不同的JSON对象

使用php区分两个不同的JSON对象,php,json,Php,Json,我正在创建一个搜索引擎。在这个搜索引擎中,我们按演员的名字搜索电影。通过演员姓名搜索电影会返回两种不同类型的JSON数据。如果未找到参与者名称,则JSON将以以下格式返回(请参阅) 当找到参与者名称时,返回的JSON是多维的,格式如下(请参阅链接:) 我试过这个密码 $output = json_decode($output); if($output['errorcode']==400)

我正在创建一个搜索引擎。在这个搜索引擎中,我们按演员的名字搜索电影。通过演员姓名搜索电影会返回两种不同类型的JSON数据。如果未找到参与者名称,则JSON将以以下格式返回(请参阅)

当找到参与者名称时,返回的JSON是多维的,格式如下(请参阅链接:)

我试过这个密码

                    $output = json_decode($output);

                    if($output['errorcode']==400)
                    {
                        foreach($output as $key =>$row)
                        {
                            echo "<p>$key  :  $row";
                                    echo '<br>';
                        }
                    }
                    else
                    {
                        foreach($output as $value)
                        {

                            foreach($value as $key =>$row)
                            {
                                if($key == "mediatype" || $key == "runtime" || $key == "unit" || $key == "show_id" )
                                    continue;
                                else if($key == "show_cast" )
                                {
                                    echo"<br>Show Cast:";
                                    $pieces = explode(",", $row);
                                    foreach($pieces as $strings)
                                    {
                                        $link='http://localhost:8000/?Title=&director=&Actor='.$strings;
                                        echo "<li><a href='$link'>$strings</a>";
                                    }
                                    echo "<br>";
                                }
                                else if($key == "director" )
                                    {
                                        if(empty($row))
                                        echo"<br>Director:No details of director<br>";
                                        else
                                        {
                                            echo"<br>Director:";
                                            $link='http://localhost:8000/?Title=&director='.$row.'&Actor=';
                                            echo "<a href='$link'>$row</a><br>";
                                        }
                                    }
                                    else if($key !="poster")
                                    {
                                        echo "$key  :  $row";
                                            echo '<br>';
                                    }
                                    else
                                    {
                                        echo '<img src="'.$row.'" />';
                                    }
                            }

                            echo "<br><br><br><br><br><br>";
                        }
                    }
$output=json\u decode($output);
如果($output['errorcode']==400)
{
foreach($key=>$row输出)
{
echo“$key:$row”;
回声“
”; } } 其他的 { foreach($输出为$值) { foreach($key=>$row的值) { 如果($key==“mediatype”| |$key==“runtime”| |$key==“unit”| |$key==“show_id”) 继续; 否则,如果($key==“show_cast”) { 回声“
显示演员阵容:”; $pieces=分解(“,”,$row); foreach($string形式的片段) { $link='1http://localhost:8000/?Title=&director=&Actor=“.$strings; 回声“
  • ”; } 回声“
    ”; } 否则,如果($key==“director”) { 如果(空($行)) echo“
    董事:没有董事的详细信息
    ”; 其他的 { 回声“
    导演:”; $link='1http://localhost:8000/?Title=&director=“.$row.”&Actor=”; 回声“
    ”; } } 否则,如果($key!=“海报”) { 回显“$key:$row”; 回声“
    ”; } 其他的 { 回声'; } } 回声“






    ”; } }
  • 使用它会给我“未定义索引:errorcode”的错误。基本上,我的问题是在if-else条件下使用什么来区分接收到的两个JSON对象

    请帮忙!!提前感谢。

    尝试
    if(is_object($output)和&isset($output->errorcode))

    所以它是这样的:

                   $output = json_decode($output);
    
                    if(is_object($output) && isset($output->errorcode))
                    {
                        foreach($output as $key =>$row)
                        {
                            echo "<p>$key  :  $row";
                                    echo '<br>';
                        }
                    }
                    else
                    {
                        // the rest
                    }
    
    $output=json\u decode($output);
    if(is_对象($output)&&isset($output->errorcode))
    {
    foreach($key=>$row输出)
    {
    echo“$key:$row”;
    回声“
    ”; } } 其他的 { //其余的 }
    发生的是,当没有匹配项时,json是一个对象,但当有匹配项时,它是一个对象数组

    如果我们只使用
    If(isset($output->errorcode))
    ,那么,在存在匹配项的情况下,$output是一个数组而不是一个对象,并且上面尝试将其视为一个对象,这会导致关于将数组视为对象的警报


    当第一个条件为false时,布尔值
    &&
    将“短路”,并且它永远不会计算第二个条件。因此,我们首先检查它是否是带有
    is\u object()
    的对象。。如果不是,则它将永远不会检查是否有名为“errorcode”的成员,从而避开将数组视为对象的警告。

    使用if(isset($output['errorcode'])会出现以下错误“无法使用stdClass类型的对象作为数组”。您应该使用$output->errorcode,而不是使用$output['errorcode']),使用$output['errorcode'],当我搜索一个存在的参与者时,它给了我以下错误“试图获取非对象的属性”。但当演员不存在时,它工作正常。我看到发生了什么。如果您查看JSON响应。。在不匹配的情况下,它是一个对象
    {“errorcode:404,etc}
    。当您获得匹配时,它是一个对象数组:
    [{result1}{result2}{etc}]
    是的,返回两种不同类型的JSON。如何区分它们?基本上我应该在if语句中写什么来区分这两种JSON??
                        $output = json_decode($output);
    
                        if($output['errorcode']==400)
                        {
                            foreach($output as $key =>$row)
                            {
                                echo "<p>$key  :  $row";
                                        echo '<br>';
                            }
                        }
                        else
                        {
                            foreach($output as $value)
                            {
    
                                foreach($value as $key =>$row)
                                {
                                    if($key == "mediatype" || $key == "runtime" || $key == "unit" || $key == "show_id" )
                                        continue;
                                    else if($key == "show_cast" )
                                    {
                                        echo"<br>Show Cast:";
                                        $pieces = explode(",", $row);
                                        foreach($pieces as $strings)
                                        {
                                            $link='http://localhost:8000/?Title=&director=&Actor='.$strings;
                                            echo "<li><a href='$link'>$strings</a>";
                                        }
                                        echo "<br>";
                                    }
                                    else if($key == "director" )
                                        {
                                            if(empty($row))
                                            echo"<br>Director:No details of director<br>";
                                            else
                                            {
                                                echo"<br>Director:";
                                                $link='http://localhost:8000/?Title=&director='.$row.'&Actor=';
                                                echo "<a href='$link'>$row</a><br>";
                                            }
                                        }
                                        else if($key !="poster")
                                        {
                                            echo "$key  :  $row";
                                                echo '<br>';
                                        }
                                        else
                                        {
                                            echo '<img src="'.$row.'" />';
                                        }
                                }
    
                                echo "<br><br><br><br><br><br>";
                            }
                        }
    
                   $output = json_decode($output);
    
                    if(is_object($output) && isset($output->errorcode))
                    {
                        foreach($output as $key =>$row)
                        {
                            echo "<p>$key  :  $row";
                                    echo '<br>';
                        }
                    }
                    else
                    {
                        // the rest
                    }