[英]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.