この投稿の最終編集者はhxlb520 on 2014-09-19 08:53:23 foreach()ループ内で配下を持たない大きな列だけを表示したい(例えば、表示コードのみ 大列1、大列4)に表示されない下位列がありますが、どのように判断すればよいでしょうか?
cid=列 ID、name=列名、parent_cid=サブ列の親列 ID
{"seller_cat":[
{"cid":"1","name ":"大きな列 1","parent_cid":"0"},
{"cid":"2","name":"大きな列 2","parent_cid":"0"},
{"cid":"3","name":"サブ列 2","parent_cid":"2"},
{"cid":"4","name":"サブ列three" ,"parent_cid":"2"},
{"cid":"5","name":"大きな列 3","parent_cid":"0"},
{"cid" :" 6","name":"サブ列 1","parent_cid":"5"},
{"cid":"7","name":"大きな列 4","parent_cid": "0 "}
]}}
-----ソリューションのアイデア---------------------- クラスメソッドは以下を参照してください。
$a = json_decode($s);<br />$ar = array();<br />foreach($a->seller_cat as $t) {<br /> if($t->parent_cid == 0 && ! array_filter($a->seller_cat, array(new T($t->cid), 'filter')))<br /> $ar[] = $t->name;<br />}<br />print_r($ar);<br />class T {<br /> private $cid;<br /><br /> function __construct($cid) {<br /> $this->cid = $cid;<br /> }<br /><br /> function filter($v) {<br /> return $v->parent_cid == $this->cid;<br /> }<br />}
ログイン後にコピー
-----ソリューションのアイデア----------------------foreach( $a->seller_cats->seller_cat as $t) {
if($t->parent_cid == 0 && ! array_filter($a->seller_cats->seller_cat, array(new T($ t->cid), 'filter')))
$ar[] = $t->name;
}