簡體   English   中英

使用PHP獲取JSON屬性名稱,后跟項目名稱值

[英]Get JSON property name followed by item name values using PHP

我正在嘗試使用PHP通過JSON進行解析,然后打印出父項屬性的名稱,后跟各項。

這是JSON

{
"Specials": [{
    "name": "Shirt","dsc":"cotton shirt",
    "vari": [{ "name":"red", "price":25.80 },{ "name":"green", "price":26.50 }]
}, 

{
    "name":"shorts","dsc":"one size","price":15.99
},

{
    "name":"shoes","dsc":"black shoes",
    "vari": [{ "name":"capri", "price":37.80 },{ "name":"shooters", "price":28.50 }]
}],

"Jumpers": [{
    "name": "Glax Red","dsc":"thin lightweight","price":22.99
}, 

{
    "name": "Bazoo Care","dsc":"ideal for winter","price":32.99
}]
}

我用下面的方法來遍歷它:

$readjson = file_get_contents('products.json') ;

$data = json_decode($readjson);

foreach ($data as $products) {
foreach ($products as $product) {

echo $product->name."<br>".$product->dsc."<br>";
if (isset($product->price))
    {
echo " ".$product->price."<br>";
}
else {
foreach ($product->vari as $var) {
echo $var->name." ".$var->price."<br/>";
}
}

輸出為:

襯衫 棉襯衫紅色25.8綠色26.5 短褲 一種尺寸 15.99 ...

我想先打印屬性的名稱,然后顯示其中的項目,它應如下所示:

特價商品

襯衫 棉襯衫紅色25.8綠色26.5

短褲 一個規模 15.99 ...

跳線

葛蘭素紅色 薄輕量級 22.99

Bazoo Care 冬季理想之選 32.99

我將其添加為外部嵌套循環:

foreach ($data as $products => $value) {
echo $products;}

但這僅返回第一個對象名稱。 如何實現以上目標?

這是JSON的可視化。

在此處輸入圖片說明

將您的json轉換為數組並循環遍歷

 $data = json_decode($readjson, true);

在這里,我們傳遞了true參數,這意味着沒有對象的數組。

foreach($data as $key => $value){
  foreach($value as $k => $v){
     echo '<b>'.$v['name'].'</b> '.' '.$v['dsc'];
     echo isset($v['price']) ? $v['price'] : ' ';
     if(array_key_exists('vari', $v)){
        $vari = array_column($v['vari'], 'price','name');
        foreach($vari as $_k => $_v){
            echo $_k.' '.$_v;
        }
     }
     echo '<hr>';
  }
}

結果:-

Shirt cotton shirt red 25.8green 26.5
shorts one size15.99
shoes black shoes capri 37.8shooters 28.5
Glax Red thin lightweight22.99
Bazoo Care ideal for winter32.99

您已經快到了,只需要在第一個循環中輸出鍵名,所以

foreach ($data as $products) {

是在項目Specials等上循環的位。因此,首先抓住foreach()的鍵,然后將其作為循環中的第一件事輸出...

foreach ($data as $key => $products) {
    echo $key."<br>";

(No } )會給...

Specials<br>Shirt<br>cot...

暫無
暫無

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

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