1

I'm trying to manage adding one array in another array but that doesn't work. Sorry if the question was already asked (but I can't find it in stackoverflow).

Here is what I'm trying to do :

$this->dataSector[0] = array('Secteur' => "S1",
                             'UL'      => intval($this->ulSecteur1),
                             'DL'      => intval($this->dlSecteur1),
                             'details' => [array('MAC' => $this->mac,
                                                 'UL'  => intval($this->ultransrate),
                                                 'DL'  => intval($this->dltransrate)
                                                      )]
                       );
$this->dataSector[1] = array('Secteur' => "S2",
                                 'UL'      => intval($this->ulSecteur1),
                                 'DL'      => intval($this->dlSecteur1),
                                 'details' => [array('MAC' => $this->mac,
                                                     'UL'  => intval($this->ultransrate),
                                                     'DL'  => intval($this->dltransrate)
                                                          )]
                           );

Another try :

$this->dataSector[0] = array('Secteur' => "S1",
                             'UL'      => intval($this->ulSecteur1),
                             'DL'      => intval($this->dlSecteur1),
                             'details'[] => array('MAC' => $this->mac,
                                                  'UL'  => intval($this->ultransrate),
                                                  'DL'  => intval($this->dltransrate)
                                                      )
                       );
$this->dataSector[1] = array('Secteur' => "S2",
                                 'UL'      => intval($this->ulSecteur1),
                                 'DL'      => intval($this->dlSecteur1),
                                 'details'[] => array('MAC' => $this->mac,
                                                      'UL'  => intval($this->ultransrate),
                                                      'DL'  => intval($this->dltransrate)
                                                          )
                           );

Or :

$this->dataSector[0] = array('Secteur' => "S1",
                             'UL'      => intval($this->ulSecteur1),
                             'DL'      => intval($this->dlSecteur1)
                       );
$this->dataSector[0]['details'][] = array('MAC' => $this->mac,
                                          'UL'  => intval($this->ultransrate),
                                          'DL'  => intval($this->dltransrate)
                                     );
$this->dataSector[1] = array('Secteur' => "S2",
                                 'UL'      => intval($this->ulSecteur1),
                                 'DL'      => intval($this->dlSecteur1)
                           );
    $this->dataSector[1]['details'][] = array('MAC' => $this->mac,
                                              'UL'  => intval($this->ultransrate),
                                              'DL'  => intval($this->dltransrate)
                                         );

Desired array :

array (size=4)
  0 => 
    array (size=4)
      'Secteur' => string 'S1' (length=2)
      'UL' => int 1
      'DL' => int 0
      'details' => 
        array (size=2)
          0 => 
            array (size=3)
              'MAC' => string 'xx:xx:xx:xx:xx:xx' (length=17)
              'UL' => int 1
              'DL' => int 0
          1 => 
            array (size=3)
              'MAC' => string 'xx:xx:xx:xx:xx:xx' (length=17)
              'UL' => int 1
              'DL' => int 0
  1 => 
    array (size=3)
      'Secteur' => string 'S2' (length=2)
      'UL' => int 0
      'DL' => int 0
      'details' => 
        array (size=2)
          0 => 
            array (size=3)
              'MAC' => string 'xx:xx:xx:xx:xx:xx' (length=17)
              'UL' => int 1
              'DL' => int 0
          1 => 
            array (size=3)
              'MAC' => string 'xx:xx:xx:xx:xx:xx' (length=17)
              'UL' => int 1
              'DL' => int 0

What's the good solution please ?

Peacefull
  • 546
  • 6
  • 24

2 Answers2

0

You can use array_merge :

<?php
$this->dataSector[0]['details'] = array_merge($this->dataSector[0]['details'], array(array('MAC' => $this->mac,
      'UL'  => intval($this->ultransrate),
      'DL'  => intval($this->dltransrate)
  )), array(array('MAC' => $this->mac,
      'UL'  => intval($this->ultransrate),
      'DL'  => intval($this->dltransrate)
  ))
);

$this->dataSector1['details'] = $this->dataSector[0]['details'];

Guillaume Sainthillier
  • 1,655
  • 1
  • 9
  • 13
0

Try this

$this->dataSector[0] = array('Secteur'=>"S1",'UL'=> intval($this->ulSecteur1), 'DL'=> intval($this->dlSecteur1),'details' => []);

$dt=array('MAC' => $this->mac,'UL'=> intval($this->ultransrate),'DL'  => intval($this->dltransrate));

array_push($this->dataSector[0]['details'], $dt);
LF00
  • 27,015
  • 29
  • 156
  • 295
  • I tried your code but the key of ['details'] array is always 0. The auto increment is not working. – Peacefull Mar 06 '17 at 09:43
  • Before adding a new detail you must create a array value and add into the principal array For example: – user3933047 Mar 06 '17 at 09:49
  • For new value you must do this `$this->mac='Yosemite',$this->ultransrate='xxxxxxx',$this->dltransrate='xxxxxx' $dt=array('MAC' => $this->mac,'UL'=> intval($this->ultransrate),'DL' => intval($this->dltransrate)); array_push($this->dataSector[0]['details'], $dt); // $this->mac='El Captain',$this->ultransrate='xxxxxxx',$this->dltransrate='xxxxxx' $dt=array('MAC' => $this->mac,'UL'=> intval($this->ultransrate),'DL' => intval($this->dltransrate)); array_push($this->dataSector[0]['details'], $dt);` – user3933047 Mar 06 '17 at 09:56