php - 陣列重新拼裝 求教
黄舟
黄舟 2017-05-16 13:07:30
0
3
440
雷雷
黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

全部回覆(3)
phpcn_u1582

題主的想要拼裝的部分有問題,以content1為例:

 ['content1'] => [
        'id'=>2,
        'content1'=>'红2',
        'id'=>1,
        'content1'=>'红1',
        'id'=>3,
        'content1'=>'红3',
    ]

這樣最終只能保留id為3的資料。
我猜題主應該需要的是這樣:

 ['content1'] => [
        ['id'=>2,'content1'=>'红2'],
        ['id'=>1,'content1'=>'红1'],
        ['id'=>3,'content1'=>'红3'],
    ]

那麼,“史上最垃圾的寫法來啦”,建議題主自己跑一下下面的程式碼。

原始數組:

$arr = [
        ['id'=>2,'title1'=>'颜色','content1'=>'红2','title2'=>'尺码','content2'=>'XL'],
        ['id'=>1,'title1'=>'颜色','content1'=>'红1','title2'=>'尺码','content2'=>'L'],
        ['id'=>1,'title1'=>'颜色','content1'=>'红3','title2'=>'尺码','content2'=>'XXL']
    ];

我寫的程式碼:

$newArr = [];
foreach($arr as $k=>$v)
{
    $keyArr = array_keys($v);
    $valueArr = array_values($v);
    foreach($keyArr as $key=>$val)
    {
        if((strstr($val, 'title') || strstr($val, 'content')) && !array_key_exists($val, $newArr)) 
            $newArr[$val] = strstr($val, 'title') ? $valueArr[$key] : [];

        if(strstr($val, 'content'))
        {
            foreach($arr as $ke=>$va)
            {
                $newArr[$val][$ke]['id'] = $va['id'];
                $newArr[$val][$ke][$val] = $va[$val];
            }
        }
    }
}

不才,程式碼寫的不好,還望題主見諒,大神別打我臉。

世界只因有你

要拼成什麼樣子?問問題你也不講清楚

阿神

需要分組查詢

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板