合并数组 php 中键的所有值

merge all values of keys in array php

不知道这个问题以前有没有人问过,找了很多都找不到

我的数组看起来像这样,

array(3) {
  [0]=>
  array(2) {
    [0]=>
    array(1) {
      ["userId"]=>
      string(3) "421"
    }
    [1]=>
    array(1) {
      ["userId"]=>
      string(3) "329"
    }
  }
  [1]=>
  array(1) {
    [0]=>
    array(1) {
      ["userId"]=>
      string(3) "329"
    }
  }
  [4]=>
  array(2) {
    [0]=>
    array(1) {
      ["userId"]=>
      string(3) "329"
    }
    [1]=>
    array(1) {
      ["userId"]=>
      string(3) "421"
    }
  }
}

我想要的是,

array(1) {
  [0]=>
  array(5) {
    [0]=>
    array(1) {
      ["userId"]=>
      string(3) "421"
    }
    [1]=>
    array(1) {
      ["userId"]=>
      string(3) "329"
    }
    [2]=>
    array(1) {
      ["userId"]=>
      string(3) "329"
    }
    [3]=>
    array(1) {
      ["userId"]=>
      string(3) "329"
    }
    [4]=>
    array(1) {
      ["userId"]=>
      string(3) "421"
    }
  }
}

我试过 array_mergearray_combine 和很多 foreach() 循环。但没有得到所需输出的运气。

不知道该怎么做。请帮忙。

你可以像这样展平你的数组:

$arr = array(array(['user' => 1], ['user' => 2]), ['user' => 3]);
$iterator = new RecursiveIteratorIterator(new RecursiveArrayIterator($arr));
foreach($iterator as $val) {
  $flattened_arr[0][] = $val;
}
var_dump($flattened_arr);

更新: 如果你不想使用 RecursiveIteratorIterator,你也可以使用 array_walk_recursive():

$non_flat_arr = array(array(['user' => 1], ['user' => 2]), ['user' => 3]);
$objTmp = (object) array('flat_arr' => array());
array_walk_recursive($non_flat_arr, create_function('&$v, $k, &$t', '$t->flat_arr[] = $v;'), $objTmp);
var_dump([ 0 => $objTmp->flat_arr]);

这将为您提供如下输出:

array:1 [
  0 => array:3 [
    0 => 1
    1 => 2
    2 => 3
  ]
]

希望对您有所帮助!