要更改的PHP数组结构

要更改的PHP数组结构,php,arrays,Php,Arrays,我在一个foreach循环中,我被一些东西卡住了 我有这个阵列: if($nr_programare == 1) { $programare_start_old = strtotime('06:00'); $programare_end_old_stamp = $programare_start_old+($durata*3600); $programare_end_old = date('H:i', $programare_end_old_stamp); $d

我在一个foreach循环中,我被一些东西卡住了

我有这个阵列:

if($nr_programare == 1) {
    $programare_start_old = strtotime('06:00');
    $programare_end_old_stamp = $programare_start_old+($durata*3600);
    $programare_end_old = date('H:i', $programare_end_old_stamp);

    $data['nr'] = $nr_programare;
    $data['sortiment'] = $sortiment;
    $data['cantitate'] = $cantitate;
    $data['start'] = '06:00';
    $data['end'] = $programare_end_old;
            $data['realizat'] = $cantitate_realizata;
} else {
    end($data);
    $programare_start_new = prev($data);
    $programare_start_new_stamp = strtotime($programare_start_new);
    $programare_end_new_stamp = $programare_start_new_stamp+($durata*3600);
    $programare_end_new = date('H:i', $programare_end_new_stamp);

    $data['nr'] = $nr_programare;
    $data['sortiment'] = $sortiment;
    $data['cantitate'] = $cantitate;
    $data['start'] = $programare_start_new;
    $data['end'] = $programare_end_new;
    $data['realizat'] = $cantitate_realizata;
}
我想把它转换成这个数组结构:

array_push($data, array($nr_programare, array($sortiment, $cantitate, $durata, $programare_start_new, $programare_end_old, $cantitate_realizata), $today.' '.$programare_start_new, $today.' '.$programare_end_old));
最后必须是这样的:

Array
(
    [0] => Array
        (
            [0] => $nr_programare
            [1] => Array
                (
                    [0] => $sortiment
                    [1] => $cantitate
                    [2] => $durata
                    [3] => $programare_start_new
                    [4] => $programare_end_new
                    [5] => $cantitate_realizata
                )

            [2] => 11.03.2015 06:00
            [3] => 11.03.2015 10:00
        )

    [1] => Array
        (
            [0] => $nr_programare
            [1] => Array
                (
                    [0] => $sortiment
                    [1] => $cantitate
                    [2] => $durata
                    [3] => $programare_start_new
                    [4] => $programare_end_new
                    [5] => $cantitate_realizata
                )

            [2] => 11.03.2015 06:00
            [3] => 11.03.2015 10:00
        )

    [2] => Array
        (
            [0] => $nr_programare
            [1] => Array
                (
                    [0] => $sortiment
                    [1] => $cantitate
                    [2] => $durata
                    [3] => $programare_start_new
                    [4] => $programare_end_new
                    [5] => $cantitate_realizata
                )

            [2] => 11.03.2015 06:00
            [3] => 11.03.2015 10:00
        )

)
等等…我需要做什么

$arr=array ()
$last='';
foreach (....) {
if($nr_programare == 1) { 
    ($arr[]= array(
            [0] => $nr_programare
            [1] => Array
                (
                    [0] => $sortiment
                    [1] => $cantitate
                    [2] => $durata
                    [3] => $programare_start_new
                    [4] => $programare_end_new
                    [5] => $cantitate_realizata
                )

            [2] => 11.03.2015 06:00
            [3] => 11.03.2015 10:00
        )
)
}else {       
  ($arr[]= array(
            [0] => $nr_programare
            [1] => Array
                (
                    [0] => $sortiment
                    [1] => $cantitate
                    [2] => $durata
                    [3] => $last
                    [4] => $programare_end_new
                    [5] => $cantitate_realizata
                )

            [2] => 11.03.2015 06:00
            [3] => 11.03.2015 10:00
        )
)
    $last=$programare_end_new;
}
}
然后,
$arr
将包含您要查找的数组


每次循环后,$last将变为最后一个$programare\u end\u new(其中nr\u programare!=1)。如果您不希望第一次迭代为空,那么您必须更改$last=1

上述所有代码都在foreach循环中。数据是正确的,我只需要将数组的结构更改为所需的结构。我试过这样做:数组推送($data,array($nr_programmare,array($sortiment,$cantitate,$durata,$programmare_start_new,$programmare_end_old,$cantitate_realizata),$today.$programmare_start_new,$todaday.$programmare_end_old));但是,这句话并不好:end($data)$programare\u start\u new=prev($data);你好我也在想办法解决这个问题。如果$nr_programare不等于1,则我希望[3]=>$programare_start_new等于上一个[4]=>$programare_end_new。上一个循环的上一个含义是什么?是ambe5960。当前的$programare\u start\u new必须等于上一个循环中的$programare\u end\u new。嘿,我马上编辑我的答案。让我知道它是否工作我已经设法这样做:结束($arr[$nr_programare-1][1]);$programare_start_new=prev($arr[$nr_programare-1][1]);