【问题标题】:PHP add array to another array auto $key with foreachPHP使用foreach将数组添加到另一个数组自动$key
【发布时间】:2017-07-26 02:05:51
【问题描述】:

我正在尝试管理在另一个数组中添加一个数组,但这不起作用。抱歉,如果这个问题已经被问过(但我在 stackoverflow 中找不到)。

这是我想要做的:

$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)
                                                          )]
                           );

再试一次:

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

或者:

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

所需的数组:

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

请问有什么好的解决办法?

【问题讨论】:

  • 你最后一次尝试应该可以。上次尝试的问题是什么?
  • @KrisRoofe 问题始终是密钥 0。密钥不会自行递增:\

标签: php arrays foreach associative-array associative


【解决方案1】:

你可以使用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'];

【讨论】:

  • 嗨,我编辑了我的问题,所以我不知道你的回答是否与我的修改有关。谢谢
【解决方案2】:

试试这个

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

【讨论】:

  • 我试过你的代码,但是['details']数组的键总是0。自动增量不起作用。
  • 在添加新细节之前,您必须创建一个数组值并添加到主体数组中 例如:
  • 对于新值,您必须这样做$this-&gt;mac='Yosemite',$this-&gt;ultransrate='xxxxxxx',$this-&gt;dltransrate='xxxxxx' $dt=array('MAC' =&gt; $this-&gt;mac,'UL'=&gt; intval($this-&gt;ultransrate),'DL' =&gt; intval($this-&gt;dltransrate)); array_push($this-&gt;dataSector[0]['details'], $dt); // $this-&gt;mac='El Captain',$this-&gt;ultransrate='xxxxxxx',$this-&gt;dltransrate='xxxxxx' $dt=array('MAC' =&gt; $this-&gt;mac,'UL'=&gt; intval($this-&gt;ultransrate),'DL' =&gt; intval($this-&gt;dltransrate)); array_push($this-&gt;dataSector[0]['details'], $dt);
猜你喜欢
  • 2016-08-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多