簡體   English   中英

PHP 數組,選擇打印特定元素及其內容

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

我想要做的基本上是在數組中選擇一個數組並打印我希望打印的內容。 這是數組。

{"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}}

我希望打印“rgInventory”,並且在該數組中,我不僅要打印主要項目,還要打印其中的一些內容,例如 id 和 classid。

這是我的代碼。

<?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;
                            }
                        }
                    }
                }
            ?>

這是我只是想弄清楚這是如何工作的。 數組有點讓我感到困惑,所以任何解釋都會有所幫助並且不勝感激。

獲取你的 json 字符串並在最后添加一個大括號,然后你可以使用 json_decode 獲取數據

例如

$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>";
}

這將輸出:

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, 

您可以使用在線工具檢查 json 編碼,例如http://json.parser.online.fr/

此外,當您處理出現的各種數組時,您可以使用 var_dump()

例如

var_dump($rgInventory);

這將向您展示陣列的組成,以便您知道如何獲得所需的部件。

我想到了。

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>';
                                        }
                                    }
                                }

感謝 Dean 為我指明了正確的方向。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM