简体   繁体   English

PHP 数组,选择打印特定元素及其内容

[英]PHP array, selecting a printing a specific element and its content

What I am trying to do is basically select an array inside of an array and print its contents that I wish to print.我想要做的基本上是在数组中选择一个数组并打印我希望打印的内容。 Here is the array.这是数组。

{"success":true,"rgInventory":{"3480848569":{"id":"3480848569","classid":"991959905","instanceid":"0","amount":"1","pos":1},"3480576615":{"id":"3480576615","classid":"937248085","instanceid":"188530139","amount":"1","pos":2},"3480546604":{"id":"3480546604","classid":"1289504012","instanceid":"188530139","amount":"1","pos":3},"3480019616":{"id":"3480019616","classid":"1287503583","instanceid":"188530139","amount":"1","pos":4},"3480018692":{"id":"3480018692","classid":"1287539933","instanceid":"188530139","amount":"1","pos":5},"3468858273":{"id":"3468858273","classid":"310796325","instanceid":"188531406","amount":"1","pos":6},"3461024351":{"id":"3461024351","classid":"1285429560","instanceid":"0","amount":"1","pos":7},"3458814606":{"id":"3458814606","classid":"1285140836","instanceid":"188531307","amount":"1","pos":8},"3456892821":{"id":"3456892821","classid":"1283034897","instanceid":"188530398","amount":"1","pos":9},"3446207634":{"id":"3446207634","classid":"1280315186","instanceid":"0","amount":"1","pos":10},"3243469958":{"id":"3243469958","classid":"1232873338","instanceid":"480085569","amount":"1","pos":11},"3144270103":{"id":"3144270103","classid":"1290987654","instanceid":"1210747767","amount":"1","pos":12}}

I wish to print "rgInventory" and within that array I want to not only print the main items but also the some of the contents inside of them sich as id and classid.我希望打印“rgInventory”,并且在该数组中,我不仅要打印主要项目,还要打印其中的一些内容,例如 id 和 classid。

Here is my code.这是我的代码。

<?php
                if(empty($_SESSION['steamid'])){
                    echo 'Please sign in to view your items.';
                }else{
                    $id = $steamprofile['steamid'];
                    $key = 'xxxxxxxxxxxxxxxxxxxxxxxxxx';
                    if($id != null){
                        $link = file_get_contents('http://steamcommunity.com/profiles/'.$id.'/inventory/json/730/2');
                        $inventory = json_decode($link, true);
                        //print_r ($inventory);
                        print(sizeof($inventory));
                        foreach($inventory as $item => $id){
                            for($x = 0; sizeof($item[1]) <= $x; $x+=0){
                                echo 'ID: '.$id;
                            }
                        }
                    }
                }
            ?>

This is me just trying to figure out how this works.这是我只是想弄清楚这是如何工作的。 Arrays kind of confuse me so any explanation will help and be much appreciated.数组有点让我感到困惑,所以任何解释都会有所帮助并且不胜感激。

Taking your json string and adding a curly bracket at the end you can then get the data out with json_decode获取你的 json 字符串并在最后添加一个大括号,然后你可以使用 json_decode 获取数据

eg例如

$link = '{"success":true,"rgInventory":{"3480848569":{"id":"3480848569","classid":"991959905","instanceid":"0","amount":"1","pos":1},"3480576615":{"id":"3480576615","classid":"937248085","instanceid":"188530139","amount":"1","pos":2},"3480546604":{"id":"3480546604","classid":"1289504012","instanceid":"188530139","amount":"1","pos":3},"3480019616":{"id":"3480019616","classid":"1287503583","instanceid":"188530139","amount":"1","pos":4},"3480018692":{"id":"3480018692","classid":"1287539933","instanceid":"188530139","amount":"1","pos":5},"3468858273":{"id":"3468858273","classid":"310796325","instanceid":"188531406","amount":"1","pos":6},"3461024351":{"id":"3461024351","classid":"1285429560","instanceid":"0","amount":"1","pos":7},"3458814606":{"id":"3458814606","classid":"1285140836","instanceid":"188531307","amount":"1","pos":8},"3456892821":{"id":"3456892821","classid":"1283034897","instanceid":"188530398","amount":"1","pos":9},"3446207634":{"id":"3446207634","classid":"1280315186","instanceid":"0","amount":"1","pos":10},"3243469958":{"id":"3243469958","classid":"1232873338","instanceid":"480085569","amount":"1","pos":11},"3144270103":{"id":"3144270103","classid":"1290987654","instanceid":"1210747767","amount":"1","pos":12}}}';

$inventory = json_decode($link, true);

if ($inventory['success']) { print "SUCCESS = TRUE<br>"; }
foreach ($inventory['rgInventory'] as $rgInventory) {
    foreach ($rgInventory as $key => $value) {
        print "$key=$value, ";
    }
    print "<br>";
}

This will output:这将输出:

SUCCESS = TRUE
id=3480848569, classid=991959905, instanceid=0, amount=1, pos=1,
id=3480576615, classid=937248085, instanceid=188530139, amount=1, pos=2,
id=3480546604, classid=1289504012, instanceid=188530139, amount=1, pos=3,
id=3480019616, classid=1287503583, instanceid=188530139, amount=1, pos=4,
id=3480018692, classid=1287539933, instanceid=188530139, amount=1, pos=5,
id=3468858273, classid=310796325, instanceid=188531406, amount=1, pos=6,
id=3461024351, classid=1285429560, instanceid=0, amount=1, pos=7,
id=3458814606, classid=1285140836, instanceid=188531307, amount=1, pos=8,
id=3456892821, classid=1283034897, instanceid=188530398, amount=1, pos=9,
id=3446207634, classid=1280315186, instanceid=0, amount=1, pos=10,
id=3243469958, classid=1232873338, instanceid=480085569, amount=1, pos=11,
id=3144270103, classid=1290987654, instanceid=1210747767, amount=1, pos=12, 

You can use online tools for checking json coding such as http://json.parser.online.fr/您可以使用在线工具检查 json 编码,例如http://json.parser.online.fr/

Also, whilst you are working on the various arrays that come out, you can use var_dump()此外,当您处理出现的各种数组时,您可以使用 var_dump()

eg例如

var_dump($rgInventory);

which will show you the make up of the array so you know how to get to the parts you need.这将向您展示阵列的组成,以便您知道如何获得所需的部件。

I figured it out.我想到了。

if ($inventory['success']) { print "SUCCESS = TRUE<br>"; }
                                foreach ($inventory['rgDescriptions'] as $rgDescription) {
                                    for($i = 0; sizeof($rgDescription['market_name']) > $i; $i++){
                                        if(isset($rgDescription['market_name'])){
                                            print '<td>'.$rgDescription['market_name'].'</td>';
                                        }
                                    }
                                }

Thank you Dean for pointing me in the right direction.感谢 Dean 为我指明了正确的方向。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM