将多维数组作为键推送到另一个数组上


Pushing multidimensional arrays as keys on another array

我有一个空数组(作为示例)和许多多维数组,我想推送到这个数组上。然而,我希望每个多维数组的密钥都成为空数组的密钥

使用

$myEmptyArray[] = $arrayOne;
$myEmptyArray[] = $arrayTwo;
$myEmptyArray[] = $arrayThree;

我得到

[
    0 => ['one' => ['a' => 'stuff']],
    1 => ['two' => ['b' => 'stuff']],
    2 => ['three' => ['c' => 'stuff']]
]

我更喜欢

[
    'one' => ['a' => 'stuff'],
    'two' => ['b' => 'stuff'],
    'three' => ['c' => 'stuff']
]

什么是一种简洁紧凑的方法(一个线性或原生php函数)可以做到这一点,而不必用foreach读取数组键,然后将该键显式分配给具有类似的值的空数组

foreach ($arrayOne as $key => $value) {
    $myEmptyArray[$key] = $value
}

因为我想在我的代码

中的许多地方使用它

您可以使用+(并集)运算符,该运算符"返回附加到左侧数组的右侧数组;对于两个数组中都存在的键,将使用左侧数组中的元素,而忽略右侧数组中的匹配元素"。

$array = [];
$array += ['one' => ['a' => 'stuff']];
$array += ['two' => ['b' => 'stuff']];
$array += ['three' => ['b' => 'stuff']];
var_dump($array);
/*
array(3) {
  'one' =>
  array(1) {
    'a' =>
    string(5) "stuff"
  }
  'two' =>
  array(1) {
    'b' =>
    string(5) "stuff"
  }
  'three' =>
  array(1) {
    'b' =>
    string(5) "stuff"
  }
}
*/

您可以简单地使用+以您想要的方式组合这些数组:

$arrayOne = array('one' => array('a' => 'stuff'));
$arrayTwo = array('two' => array('b' => 'stuff'));
$arrayThree = array('three' => array('c' => 'stuff'));
$myEmptyArray = array();
$myEmptyArray += $arrayOne;
$myEmptyArray += $arrayTwo;
$myEmptyArray += $arrayThree;
echo "<pre>"; print_r($myEmptyArray); echo "</pre>";

输出:

Array
(
    [one] => Array
        (
            [a] => stuff
        )
    [two] => Array
        (
            [b] => stuff
        )
    [three] => Array
        (
            [c] => stuff
        )
)