フロントページのカスケードメニューで使用するためにJSONを出力するためのネストされた配列を構築したいのですが、これまで不可能でした。アドバイスをお願いします。
一般的な構造は次のとおりです。
製品 [商品]
|-ドリンク [ドリンク] (clsID, clsName)
| - 炭酸飲料 [ソーダ] (itemID, itemName)
| - ジュース飲料 [ジュース] (itemID, itemName) )
|-食品カテゴリ [food] (clsID, clsName)
|-生鮮食品 [fresh] (itemID, itemName)
|-調理済み食品 [cooked] (itemID, itemName)
最初に書きました1 つですが、効果はありません
<?php /**/ $tmparr[] = array('ClsID'=>'01','ClsName'=>'饮料类'); array_push($tmparr[0],array('ItemID'=>'0000','ItemName'=>'碳酸饮料','ItemRate'=>'100%')); array_push($tmparr[0],array('ItemID'=>'0001','ItemName'=>'果汁饮料','ItemRate'=>'100%')); $tmparr[] = array('ClsID'=>'02','ClsName'=>'食品类'); $tmp[]=array('ItemID'=>'0101','ItemName'=>'生鲜','ItemRate'=>'3%'); $tmp[]=array('ItemID'=>'0102','ItemName'=>'熟食','ItemRate'=>'3%'); array_push($tmparr[1],$tmp); $json_str=json_encode($tmparr); //print_r($tmparr); echo $json_str;?>
同じ問題は、ネストされた配列を構築するときに各ノードにキー値を追加する方法がないことです。
これでいいんじゃないですか?
何が欲しいの?
これが効果です
--------------------------------------
配列
(
[0] => 配列
(
) [ClsID] ] =&gt; Id] =&gt; )
)
)
对,你的代码出来的就是这个
你想要什么样的?
想实现是这个嵌套数组,特别节点需要一个键值
---------------------------------------------
[clslst]Array
(
[drink] => Array
(
[ClsID] => 01
[ClsName] => 饮料类
[sodas] => Array
(
[ItemID] => 0000
[ItemName] => 碳酸饮料
[ItemRate] => 100%
)
[juice] => Array
(
[ItemID] => 0001
[ItemName] => 果汁饮料
[ItemRate] => 100%
)
)
[food] => Array
(
[ClsID] => 02
[ClsName] => 食品类
[fresh] => Array
(
[ItemID] => 0101
[ItemName] => 生鲜
[ItemRate] => 3%
)
[cooked] => Array
(
[ItemID] => 0102
[ItemName] => 熟食
[ItemRate] => 3%
)
)
)
求教xuzuning版主指点了,PHP学习得不是很熟悉
你的代码并没有给出键名,我何以知道该是什么?
<?php /**/ $tmparr[] = array('ClsID'=>'01','ClsName'=>'饮料类'); // [drink] array_push($tmparr[0],array('ItemID'=>'0000','ItemName'=>'碳酸饮料','ItemRate'=>'100%')); //[sodas] array_push($tmparr[0],array('ItemID'=>'0001','ItemName'=>'果汁饮料','ItemRate'=>'100%')); //[juice] $tmparr[] = array('ClsID'=>'02','ClsName'=>'食品类'); //[food] $tmp[]=array('ItemID'=>'0101','ItemName'=>'生鲜','ItemRate'=>'3%'); //[fresh] $tmp[]=array('ItemID'=>'0102','ItemName'=>'熟食','ItemRate'=>'3%'); //[cooked] array_push($tmparr[1],$tmp); $json_str=json_encode($tmparr); //print_r($tmparr); echo $json_str;?>
键名在后面有注释
那你直接写上不就得了
$tmparr['drink'] = array('ClsID'=>'01','ClsName'=>'饮料类'); // [drink] $tmparr['drink']['sodas'] = array('ItemID'=>'0000','ItemName'=>'碳酸饮料','ItemRate'=>'100%'); //[sodas] $tmparr['drink']['juice'] = array('ItemID'=>'0001','ItemName'=>'果汁饮料','ItemRate'=>'100%'); //[juice] $tmparr['food'] = array('ClsID'=>'02','ClsName'=>'食品类'); //[food] $tmparr['food']['fresh'] = array('ItemID'=>'0101','ItemName'=>'生鲜','ItemRate'=>'3%'); //[fresh] $tmparr['food']['cooked'] = array('ItemID'=>'0102','ItemName'=>'熟食','ItemRate'=>'3%'); //[cooked]
谢谢,搞半天搞复杂了。