簡體   English   中英

php根據鍵重新排列數組

[英]Php rearrange array according to the key

我嘗試將數組類型從$ data轉換為$ data2,但沒有成功。

$data數組中,所有值均根據日期放置。

但是在$data2值是根據標題放置的。

我想知道它是否是可轉換數組。

$data['Group1']['Date1']['Empty'] = 5;
$data['Group1']['Date1']['Reservated'] = 1;
$data['Group1']['Date1']['WillReturn'] = 3;
$data['Group1']['Date1']['Remains'] = 1;
$data['Group1']['Date2']['Empty'] = 2;
$data['Group1']['Date2']['Reservated'] = 2;
$data['Group1']['Date2']['WillReturn'] = 3;
$data['Group1']['Date2']['Remains'] = -3;

$data['Group2']['Date1']['Empty'] = 0;
$data['Group2']['Date1']['Reservated'] = 1;
$data['Group2']['Date1']['WillReturn'] = 3;
$data['Group2']['Date1']['Remains'] = -4;
$data['Group2']['Date2']['Empty'] = 10;
$data['Group2']['Date2']['Reservated'] = 1;
$data['Group2']['Date2']['WillReturn'] = 1;
$data['Group2']['Date2']['Remains'] = 8;

$data2 = [
    'Group1' => [
        [ 'Title' => 'Empty',
            'Date1' => 5,
            'Date2' => 2,

        ],
        [ 'Title' => 'Reservated',
            'Date1' => 1,
            'Date2' => 2,

        ],
        [ 'Title' => 'WillReturn',
            'Date1' => 3,
            'Date2' => 3,
        ],
        [ 'Title' => 'Remains',
            'Date1' => 1,
            'Date2' => -3,
        ],
        // etc...
    ],
    'Group2' => [
        [ 'Title' => 'Empty',
            'Date1' => 0,
            'Date2' => 10,

        ],
        [ 'Title' => 'Reservated',
            'Date1' => 1,
            'Date2' => 1,

        ],
        [ 'Title' => 'WillReturn',
            'Date1' => 3,
            'Date2' => 1,
        ],
        [ 'Title' => 'Remains',
            'Date1' => -4,
            'Date2' => -8,
        ],
        // etc...
    ],
    // etc...
];

一些嘗試在這里:

$new = [];
    $grp = array_keys($datax);
    $i =0;
    foreach($datax as $key => $val)
    {
        $dates = array_keys($val);
        foreach($val as $k=>$v)
        {
            $cases = array_keys($v);
            $caseAndVals[$i]=$v;
            $i++;
        }
    }
    $z =0;
    $y = 0;
    foreach($grp as $g)
    {
        foreach($cases as $c)
        {
            $new[$g][$z]['Title']=$c;
            foreach($dates as $d)
            {
                $new[$g][$z][$d] = 'values which correspond to the date and title';
            }
            $z++;
        }

    }

我根據組和案例轉換了數組,但是我沒有成功放置對應日期的值...

你很親密

要獲取與values which correspond to the date and titlevalues which correspond to the date and title ,請使用$data[$g][$d][$c]

並且您每次需要通過$grp循環將$z重置$z 0 ,以便在每個組數組上獲得正確的索引。

$new = array();
$grp = array_keys($data);

foreach($data as $key => $val)
{
    $dates = array_keys($val);
    foreach($val as $k=>$v)
    {
        $cases = array_keys($v);
        $caseAndVals[]=$v;
    }
}

foreach($grp as $g)
{
    $z = 0;
    foreach($cases as $c)
    {
        $new[$g][$z]['Title']=$c;
        foreach($dates as $d)
        {
            $new[$g][$z][$d] = $data[$g][$d][$c];
        }
        $z++;
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM