2016-10-17 54 views
1

我试着做多阵列像这样:增加值

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值。每个“标准”的X值都会增加,并且每个“标准”的Y值都需要增加。

我已经tryed很多来弄完,这是代码我有这么票价:

$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) 
      } 
     } 
     } 
    } 
    } 
} 

回答

0

的疑问句有点难以遵循,但如果我明白,你几乎需要一个i×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 
             ) 

           ) 

         ) 

       ) 

     ) 

) 
+0

我需要最后的结果是这样的: – Krabsen

+0

@Krabsen我已经更新了提供的代码,我想我误解你的要求第一时间周围。我在PHP 7中使用了一些更新的PHP语法([null coalescing operator](http://php.net/manual/en/migration70.new-features.php#migration70.new-features.null-coalesce-op)和PHP 5.4中的短阵列语法) - 如果这是一个问题,请告诉我。 – jonnu

+0

我在这里得到一个语法错误:$ data ['opgang'。 $ i] ['etage'。 $ j] = $ prev ?? $ DELE; – Krabsen