鍍金池/ 問答/PHP/ 遞歸查詢屬性

遞歸查詢屬性

圖片描述

怎么循環(huán)出以下格式

array(
  'detali'=> 
        array('顏色'=>白色)
        array('包裝'=>大)
        array('規(guī)則'=>1)
)
array(
  'detali'=> 
        array('顏色'=>白色)
        array('包裝'=>小)
        array('規(guī)則'=>1)
)
array(
  'detali'=> 
        array('顏色'=>白色)
        array('包裝'=>大)
        array('規(guī)則'=>2)
)
array(
  'detali'=> 
        array('顏色'=>白色)
        array('包裝'=>小)
        array('規(guī)則'=>2)
)
array(
  'detali'=> 
        array('顏色'=>黑色)
        array('包裝'=>大)
        array('規(guī)則'=>1)
)
array(
  'detali'=> 
        array('顏色'=>黑色)
        array('包裝'=>小)
        array('規(guī)則'=>1)
)
array(
  'detali'=> 
        array('顏色'=>黑色)
        array('包裝'=>大)
        array('規(guī)則'=>2)
)
array(
  'detali'=> 
        array('顏色'=>黑色)
        array('包裝'=>小)
        array('規(guī)則'=>2)
)
回答
編輯回答
巷尾

代碼:

$arr = [
    ['value' => '顏色', 'detailValue' => '', 'attrHidden' => true, 'detail' => ['白色','黑色']],
    ['value' => '包裝', 'detailValue' => '', 'attrHidden' => true, 'detail' => ['大','小']],
    ['value' => '規(guī)則', 'detailValue' => '', 'attrHidden' => true, 'detail' => ['1','2']]
];

function decare($arr){
    $data = [];
    $res = [];
    for ($i=0; $i < count($arr)-1; $i++) { 

        if($i == 0){
            $data = $arr[$i]['detail'];
        }
        //替代變量1
        $rep1 = [];

        foreach ($data as $v) {
            foreach ($arr[$i+1]['detail'] as $g) {
                //替代變量2
                $rep2 = ($i!=0?'':$arr[$i]['value']."_").$v."-".$arr[$i+1]['value']."_".$g;
                $tmp[] = $rep2;
                if($i==count($arr)-2){
                    foreach (explode('-', $rep2) as $k => $h) {
                        //替代變量3
                        $rep3 = explode('_', $h);
                        //替代變量4
                        $rep4['detail'][$rep3[0]] = $rep3[1];
                    }
                    $res[] = $rep4;
                }
            }
        }

        $data = $tmp;
    }
    return [$data,$res];
}
print_r(decare($arr)[1]);

結(jié)果:

clipboard.png

2017年12月4日 07:19