linccce

MultidimensionalArraySubtraction

Apr 17th, 2014
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 8.94 KB | None | 0 0
  1. I have this array:
  2. array (size=3)
  3.   600 =>
  4.     array (size=9)
  5.       20090403 =>
  6.         array (size=2)
  7.           'atejo' => string '061359' (length=6)
  8.           'isejo' => string '201030' (length=6)
  9.       20090401 =>
  10.         array (size=2)
  11.           'atejo' => string '061607' (length=6)
  12.           'isejo' => string '172359' (length=6)
  13.       20090406 =>
  14.         array (size=2)
  15.           'atejo' => string '070951' (length=6)
  16.           'isejo' => string '202657' (length=6)
  17.       20090410 =>
  18.         array (size=2)
  19.           'atejo' => string '070956' (length=6)
  20.           'isejo' => string '192603' (length=6)
  21.       20090409 =>
  22.         array (size=2)
  23.           'atejo' => string '071208' (length=6)
  24.           'isejo' => string '214419' (length=6)
  25.       20090415 =>
  26.         array (size=2)
  27.           'atejo' => string '071257' (length=6)
  28.           'isejo' => string '194741' (length=6)
  29.       20090407 =>
  30.         array (size=2)
  31.           'atejo' => string '164836' (length=6)
  32.           'isejo' => string '195309' (length=6)
  33.       20090414 =>
  34.         array (size=2)
  35.           'atejo' => string '073737' (length=6)
  36.           'isejo' => string '201052' (length=6)
  37.       20090413 =>
  38.         array (size=2)
  39.           'atejo' => string '152621' (length=6)
  40.           'isejo' => string '195248' (length=6)
  41.   310 =>
  42.     array (size=1)
  43.       20090402 =>
  44.         array (size=2)
  45.           'isejo' => string '145639' (length=6)
  46.           'atejo' => string '145813' (length=6)
  47.   370 =>
  48.     array (size=4)
  49.       20090408 =>
  50.         array (size=1)
  51.           'atejo' => string '071738' (length=6)
  52.       20090417 =>
  53.         array (size=2)
  54.           'atejo' => string '083641' (length=6)
  55.           'isejo' => string '174714' (length=6)
  56.       20090416 =>
  57.         array (size=2)
  58.           'atejo' => string '073629' (length=6)
  59.           'isejo' => string '171001' (length=6)
  60.       20090411 =>
  61.         array (size=2)
  62.           'atejo' => string '085419' (length=6)
  63.           'isejo' => string '121022' (length=6)
  64.  
  65. I want to filter it via this filter and calculate differences between 'atėjo' and 'išėjo' times. And put them back into multidimensional array to keep the mapping of difference on the date for specified id.
  66.  
  67. foreach ($atvikimas as $k1 => $value1)
  68.                                          {
  69.                                                 foreach ($value1 as $k2 => $value2) //$k2 personid
  70.                                                 {
  71.                                                     foreach ($value2 as $k3 => $value3) //$k3 datos
  72.                                                     {
  73.                                                         //$atejimo_laikas = '';
  74.                                                         //$isejimo_laikas = '';
  75.                                                         if ($k3 == 'atėjo')
  76.                                                             {
  77.                                                                 $atejimo_laikas = $value2[$k3];
  78.                                                             }
  79.                                                         else
  80.                                                             {
  81.                                                                 $isejimo_laikas = $value2[$k3];
  82.                                                             }
  83.                                                         $abcd = $isejimo_laikas - $atejimo_laikas;
  84.                                                         $isdirbtas_laikas[$k1][$k2] = $abcd;
  85.                                                     }
  86.                                                 }
  87.                                            
  88.  
  89.                                          }
  90.                                          var_dump($atejimo_laikas);
  91.  
  92. So result should look like this, values should be difference between dates.
  93. array (size=3)
  94.   600 =>
  95.     array (size=9)
  96.       20090403 => string '061359' (length=6)
  97.       20090401 => string '172359' (length=6)
  98.       20090406 => string '202657' (length=6)
  99.       20090410 => string '192603' (length=6)
  100.       20090409 => string '071208' (length=6)
  101.       20090415 => string '194741' (length=6)
  102.       20090407 => string '195309' (length=6)
  103.       20090414 => string '201052' (length=6)
  104.       20090413 => string '195248' (length=6)
  105.   310 =>
  106.     array (size=1)
  107.       20090402 => string '145813' (length=6)
  108.   370 =>
  109.     array (size=4)
  110.       20090408 => string '071738' (length=6)
  111.       20090417 => string '174714' (length=6)
  112.       20090416 => string '171001' (length=6)
  113.       20090411 => string '121022' (length=6)
  114.  
  115. I was given advice not to use 3rd foreach and to specify array's field, here what I get after it:
  116.  
  117.                                         foreach ($atvikimas as $k1 => $value1)
  118.                                         {
  119.                                                foreach ($value1 as $k2 => $value2) //$k2 personid
  120.                                                {
  121.                                                   //foreach ($value2 as $k3 => $value3) //$k3 datos
  122.                                                   //{
  123.                                                        //$atejimo_laikas = '';
  124.                                                        //$isejimo_laikas = '';
  125.                                                        if ($value2 == 'atejo')
  126.                                                            {
  127.                                                                $atejimo_laikas = $value2['atejo'];
  128.                                                            }
  129.                                                        else
  130.                                                            {
  131.                                                                $isejimo_laikas = $value2['isejo'];
  132.                                                            }
  133.                                                        $abcd = $isejimo_laikas - $atejimo_laikas;
  134.                                                        //$isdirbtas_laikas[$k1][$k2] = $abcd;
  135.                                                   // }
  136.                                                }
  137.                                         }
  138.                                         var_dump($abcd);
  139.  
  140. Error report:
  141.  
  142. Undefined variable: atejimo_laikas
  143.  
  144. And it specifies this line: $abcd = $isejimo_laikas - $atejimo_laikas;
  145.  
  146. And I can't get var_dumps of $atejimo_laikas and $isejimo_laikas. Because, foreach can't find 'atejo' and 'isejo' index. So suggestion was illogical to the suggestion.
  147.  
  148. When I use third foreach, here is var_dumps of $k3 and $value3:
  149.  
  150. var_dump($atejimo_laikas);
  151. var_dump($isejimo_laikas);
  152. var_dump($k3);
  153.  
  154. string '085419' (length=6)
  155. string '121022' (length=6)
  156. string 'isejo' (length=5)
  157.  
  158. How should I make it continuesly subtracting $isejimo_laikas from $atejimo_laikas?
  159. And store results in:
  160. $isdirbtas_laikas[$k1][$k2] ($k1 is id and $k2 is str_replace "" "-" string).
  161.  
  162. foreach ($atvikimas as $k1 => $value1)
  163.                                         {
  164.                                                foreach ($value1 as $k2 => $value2) //$k2 personid
  165.                                                {
  166.                                                   //foreach ($value2 as $k3 => $value3) //$k3 datos
  167.                                                   //{
  168.                                                        //$atejimo_laikas = '';
  169.                                                        //$isejimo_laikas = '';
  170.                                                    $length = $value2['isejo'] - $value2['atejo'];
  171.                                                     /* if ($value2['atejo'])
  172.                                                            {
  173.                                                                //$atejimo_laikas[] = $value3;
  174.                                                                $length = $value2['išėjo'] - $value2['atėjo'];
  175.                                                            }
  176.                                                        else
  177.                                                            {
  178.                                                                $isejimo_laikas[] = $value3;
  179.                                                            }*/
  180.                                                       //var_dump($k3);
  181.                                                        //$length = $value2['išėjo'] - $value2['atėjo'];
  182.                                                        //$abcd = $isejimo_laikas - $atejimo_laikas;
  183.                                                        //$isdirbtas_laikas[$k1][$k2] = $abcd;
  184.                                                      //var_dump($length);  
  185.                                                        
  186.                                                        
  187.                                                }
  188.                                         }
Advertisement
Add Comment
Please, Sign In to add comment