【问题标题】:Combine multiple arrays with identica keys and different values将多个数组与相同的键和不同的值组合起来
【发布时间】:2019-02-19 09:39:26
【问题描述】:

我有这两个在两个 foreach 循环中生成的数组,我想将第一个数组设置为键,将第二个数组设置为值。

在我使用这段代码之后

foreach ($difference AS $j) {
   $fv = $cate->getFilterValueByFeatureID($j);
        foreach ($fv AS $z) {
             $array = array(
                  $j => $z
                 );
              var_dump($array);
          }
 }

这是我得到的

array(1) {
  [6]=>
  int(15)
}

array(1) {
   [6]=>
   int(20)
 }

array(1) {
    [8]=>
  int(26)
}

array(1) {
  [8]=>
  int(27)
    }

array(1) {
    [8]=>
    int(33)
}

我想要这个结果

array(1){
[6] => array(
        [0] => 15
        [1] => 20
)
array(1){
[8] => array(
        [0] => 26
        [1] => 27
        [2] => 33
)

【问题讨论】:

  • 只需要改成$array[$j][] = $z; (假设 $j 是键,如果您想添加一个新的数组元素 $z,那么该键指向一个数组)。

标签: php arrays foreach


【解决方案1】:

像这样(未经测试)

$result = [];
foreach ($difference AS $j) {
  $fv = $cate->getFilterValueByFeatureID($j);
    foreach ($fv AS $z) {
         if(!isset($result[$j])) $result[$j] = [];

         $result[$j][] = $z;
      }
}

var_dump($result);

【讨论】:

  • 您可以删除此行if(!isset($result[$j])) $result[$j] = [];。如果$j没有设置,PHP会自动创建空数组
  • @ArtisticPhoenix 感谢它的工作,但我没有得到所有的价值,但在我做了 dWinder 说它工作得很好之后
猜你喜欢
  • 1970-01-01
  • 2013-02-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-17
  • 1970-01-01
  • 1970-01-01
  • 2019-09-25
  • 2020-04-12
相关资源
最近更新 更多