Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.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_Arrays_Json - Fatal编程技术网

Php 从JSON中的数组数组获取元素

Php 从JSON中的数组数组获取元素,php,arrays,json,Php,Arrays,Json,以这个JSON为例:我试图获取数组中的一个特定元素,数组数组中的一个元素。它还与这些数组中的其他元素具有相同的名称。这是我现在使用的PHP代码 $data = file_get_contents('http://steamcommunity.com/id/berthiest/inventory/json/730/2/'); $json = json_decode($data); foreach ($json->rgDescriptions as $mydata) { forea

以这个JSON为例:我试图获取数组中的一个特定元素,数组数组中的一个元素。它还与这些数组中的其他元素具有相同的名称。这是我现在使用的PHP代码

$data = file_get_contents('http://steamcommunity.com/id/berthiest/inventory/json/730/2/');

$json = json_decode($data);

foreach ($json->rgDescriptions as $mydata)
{
    foreach($mydata->tags as $tag) {
        echo $tag->name;
    }
}
如您所见,我正在
“tags”
中的数组中搜索
“name”
元素。如果您查看JSON并测试此代码,您会注意到在
“tags”
的数组中有许多
“name”
元素。我想要的唯一“
name”
元素是数组中的元素,它也包含
“category\u name”:“Quality”

我无法选择从中获取
“name”
的数组号,如下所示:

foreach ($json->rgDescriptions as $mydata)
{
    echo $mydata->tags[3]->name;
}
因为在整个JSON中,
“标记”
中有不同数量的数组

“标记”
示例:

我想要最后一个数组中的
“name”:“Base Grade”
元素,因为它包含
“category\u name”:“Quality”


那我该怎么做呢

您可以添加如下条件

foreach($mydata->tags as $tag) {
     if(isset($tag->category_name) && $tag->category_name == 'Quality') {
          echo $tag->name;
     }
}

您可以添加如下条件

foreach($mydata->tags as $tag) {
     if(isset($tag->category_name) && $tag->category_name == 'Quality') {
          echo $tag->name;
     }
}

您可以使用
isset
测试数据的存在性,以确保在回显您的姓名之前您的条件是真实的。类似于

foreach ($json->rgDescriptions as $mydata)
{
    foreach ($mydata->tags as $tag) {
        if (isset($tag->category_name) && $tag->category_name == 'Quality') {
            echo $tag->name;
        }
    }
}

您可以使用
isset
测试数据的存在性,以确保在回显您的姓名之前您的条件是真实的。类似于

foreach ($json->rgDescriptions as $mydata)
{
    foreach ($mydata->tags as $tag) {
        if (isset($tag->category_name) && $tag->category_name == 'Quality') {
            echo $tag->name;
        }
    }
}

这与JavaScript到底有什么关系?请在文章中提供一个最简单的数据示例。无论哪种方式,解决方案似乎都是简单地迭代所有
标记
,并检查其中是否有
类别名称“:“质量”“
并且只使用这个。您解码了json,因此它不再是json了。它只是一个普通的旧PHP数据结构。仅仅因为它来自一个json字符串并不意味着它神奇的不同。这与JavaScript到底有什么关系?请在文章中提供一个最简单的数据示例。无论哪种方式,解决方案似乎都是简单地迭代所有
标记
,并检查其中是否有
类别名称“:“质量”“
并且只使用这个。您解码了json,因此它不再是json了。它只是一个普通的旧PHP数据结构。仅仅因为它来自一个json字符串并不意味着它神奇的不同。太好了,谢谢。我很快就会接受答案的。太好了,谢谢。如果条件允许,我很快就会接受这个答案。