增加数组中的值

时间:2016-10-17 06:10:55

标签: php arrays

我试图像这样制作多个阵列:

array(1) {
  ["Test"]=>
  array(1) {
    [0]=>
    array(3) {
      ["opgang1"]=>
      array(2) {
        ["etage2"]=>
        array(1) {
          ["varm"]=>
          array(4) {
            ["x1"]=>
            int(50)
            ["x2"]=>
            int(150)
            ["y1"]=>
            int(0)
            ["y2"]=>
            int(0)
          }
        }
        ["etage1"]=>
        array(1) {
          ["varm"]=>
          array(4) {
            ["x1"]=>
            int(100)
            ["x2"]=>
            int(300)
            ["y1"]=>
            int(0)
            ["y2"]=>
            int(0)
          }
        }
      }
      ["opgang2"]=>
      array(2) {
        ["etage2"]=>
        array(1) {
          ["varm"]=>
          array(4) {
            ["x1"]=>
            int(50)
            ["x2"]=>
            int(150)
            ["y1"]=>
            int(0)
            ["y2"]=>
            int(0)
          }
        }
        ["etage1"]=>
        array(1) {
          ["varm"]=>
          array(4) {
            ["x1"]=>
            int(100)
            ["x2"]=>
            int(300)
            ["y1"]=>
            int(0)
            ["y2"]=>
            int(0)
          }
        }
      }
      ["opgang3"]=>
      array(2) {
        ["etage2"]=>
        array(1) {
          ["varm"]=>
          array(4) {
            ["x1"]=>
            int(50)
            ["x2"]=>
            int(150)
            ["y1"]=>
            int(0)
            ["y2"]=>
            int(0)
          }
        }
        ["etage1"]=>
        array(1) {
          ["varm"]=>
          array(4) {
            ["x1"]=>
            int(100)
            ["x2"]=>
            int(300)
            ["y1"]=>
            int(0)
            ["y2"]=>
            int(0)
          }
        }
      }
    }
  }
}

我的问题是我需要y值像x值一样增加。每个" etage"并且每个" opgang"都需要增加y值。

我已经尝试了很多功能,这就是我所拥有的代码:

$projektNavn = "Test";
$opgange = 3;
$etage = 2;
$temp = array();

$dele = array(
    'varm' => array('x1' => 0, 'x2' => 0, 'y1' => 0, 'y2' => 0)
//    'kold' => array('x1' => '200', 'x2' => '200', 'y1' => '200', 'y2' => '200')
);

for ($i = $etage; $i >= 1; $i--) {

    $varmeX1 = $dele['varm']['x1'] + 50;
    $varmeX2 = $dele['varm']['x2'] + 150;
    $dele['varm']['x1'] = $varmeX1;
    $dele['varm']['x2'] = $varmeX2;

    $etag['etage' . $i] = $dele;
}

for ($j = 1; $j <= $opgange; $j++) {

    $varmeY1 = $dele['varm']['y1'] + 100;
    $varmeY2 = $dele['varm']['y2'] + 200;
    $dele['varm']['y1'] = $varmeY1;
    $dele['varm']['y2'] = $varmeY2;

//        $temp = $dele;

    $opgang['opgang' . $j] = $etag;
}

$projekt = array(
    $projektNavn => array(
        $opgang
    )
);

echo "<pre>";
var_dump($projekt);
echo "</pre><br>";

我知道$varmeY1$varmeY2没有被添加到$etag,因此0,我尝试了所有我知道的,所以希望你们中的一些人可以帮助我:)

最终结果必须是:

array(1) {
  ["Test"]=>
  array(1) {
    [0]=>
    array(3) {
      ["opgang1"]=>
      array(2) {
        ["etage2"]=>
        array(1) {
          ["varm"]=>
          array(4) {
            ["x1"]=>
            int(50)
            ["x2"]=>
            int(150)
            ["y1"]=>
            int(100)
            ["y2"]=>
            int(200)
          }
        }
        ["etage1"]=>
        array(1) {
          ["varm"]=>
          array(4) {
            ["x1"]=>
            int(100)
            ["x2"]=>
            int(300)
            ["y1"]=>
            int(100)
            ["y2"]=>
            int(200)
          }
        }
      }
      ["opgang2"]=>
      array(2) {
        ["etage2"]=>
        array(1) {
          ["varm"]=>
          array(4) {
            ["x1"]=>
            int(50)
            ["x2"]=>
            int(150)
            ["y1"]=>
            int(200)
            ["y2"]=>
            int(400)
          }
        }
        ["etage1"]=>
        array(1) {
          ["varm"]=>
          array(4) {
            ["x1"]=>
            int(100)
            ["x2"]=>
            int(300)
            ["y1"]=>
            int(200)
            ["y2"]=>
            int(400)
          }
        }
      }
      ["opgang3"]=>
      array(2) {
        ["etage2"]=>
        array(1) {
          ["varm"]=>
          array(4) {
            ["x1"]=>
            int(50)
            ["x2"]=>
            int(150)
            ["y1"]=>
            int(300)
            ["y2"]=>
            int(600)
          }
        }
        ["etage1"]=>
        array(1) {
          ["varm"]=>
          array(4) {
            ["x1"]=>
            int(100)
            ["x2"]=>
            int(300)
            ["y1"]=>
            int(300)
            ["y2"]=>
            int(600)
          }
        }
      }
    }
  }
}

1 个答案:

答案 0 :(得分:0)

这个问题有点难以理解,但如果我理解,你几乎需要一个i x j矩阵,iopgangejetage。如果我错了,请纠正我 - 如果不是,这应该可以帮到你 - 你只需要嵌套循环。

<?php

$projektNavn = "Test";
$opgange     = 3;
$etage       = 2;

$dele = [
    'varm' => ['x1' => 0, 'x2' => 0, 'y1' => 0, 'y2' => 0]
//    'kold' => array('x1' => '200', 'x2' => '200', 'y1' => '200', 'y2' => '200')
];

$data = [];
$temp = $dele;

for ($i = 1; $i <= $opgange; $i++)
{
    if (!isset($data['opgang' . $i])) {
        $data['opgang' . $i] = [];
    }

    $temp['varm']['y1'] += 100;
    $temp['varm']['y2'] += 200;

    $prev = null;

    for ($j = 1; $j <= $etage; $j++)
    {
        $data['opgang' . $i]['etage' . $j] = (null !== $prev) ? $prev : $dele;

        $data['opgang' . $i]['etage' . $j]['varm']['x1'] += 50;
        $data['opgang' . $i]['etage' . $j]['varm']['x2'] += 150;
        $data['opgang' . $i]['etage' . $j]['varm']['y1'] = $temp['varm']['y1'];
        $data['opgang' . $i]['etage' . $j]['varm']['y2'] = $temp['varm']['y2'];

        $prev = $data['opgang' . $i]['etage' . $j];
    }
}

unset($temp);

$projekt = [
    $projektNavn => [
        $data
    ]
];

print_r($projekt);

以上输出如下:

Array
(
    [Test] => Array
        (
            [0] => Array
                (
                    [opgang1] => Array
                        (
                            [etage1] => Array
                                (
                                    [varm] => Array
                                        (
                                            [x1] => 50
                                            [x2] => 150
                                            [y1] => 100
                                            [y2] => 200
                                        )

                                )

                            [etage2] => Array
                                (
                                    [varm] => Array
                                        (
                                            [x1] => 100
                                            [x2] => 300
                                            [y1] => 100
                                            [y2] => 200
                                        )

                                )

                        )

                    [opgang2] => Array
                        (
                            [etage1] => Array
                                (
                                    [varm] => Array
                                        (
                                            [x1] => 50
                                            [x2] => 150
                                            [y1] => 200
                                            [y2] => 400
                                        )

                                )

                            [etage2] => Array
                                (
                                    [varm] => Array
                                        (
                                            [x1] => 100
                                            [x2] => 300
                                            [y1] => 200
                                            [y2] => 400
                                        )

                                )

                        )

                    [opgang3] => Array
                        (
                            [etage1] => Array
                                (
                                    [varm] => Array
                                        (
                                            [x1] => 50
                                            [x2] => 150
                                            [y1] => 300
                                            [y2] => 600
                                        )

                                )

                            [etage2] => Array
                                (
                                    [varm] => Array
                                        (
                                            [x1] => 100
                                            [x2] => 300
                                            [y1] => 300
                                            [y2] => 600
                                        )

                                )

                        )

                )

        )

)