PHP合并具有重复键的关联数组

I have an array like this:

$array1 = [
  ['State'=>'Utah', 'users'=>5],
  ['State'=>'California', 'users'=>10]
]

$array2 = [
  ['State'=>'Utah', 'emails'=>18],
  ['State'=>'Arizona', 'emails'=>32],
  ['State'=>'California', 'emails'=>28],
]

How would I merge them so that it will become like this:

$mergedArray = [
  ['State'=>'Utah', 'users'=>5, 'emails'=>18],
  ['State'=>'Arizona', 'emails'=>32],
  ['State'=>'California', 'users'=>10, 'emails'=>28]
]

I tried array_merge but it only kept data from the first array.

Edit: Notice how the length and order of the array can be different.

Use array_replace_recursive function:

$array1 = ['Utah'=>['users'=>5],'California'=>['users'=>10]];
$array2 = ['Utah'=>['emails'=>18],'California'=>['emails'=>28]];

$result = array_replace_recursive($array1, $array2);

print_r($result);

The output:

Array
(
    [Utah] => Array
        (
            [users] => 5
            [emails] => 18
        )

    [California] => Array
        (
            [users] => 10
            [emails] => 28
        )
)

Update:
Though you have changed your initial requirements I also have solution for your new input data.
Used functions: array_merge and array_values

// user data
$array1 = [
  ['State'=>'Utah', 'users'=>5],
  ['State'=>'California', 'users'=>10]
];

// email data
$array2 = [
  ['State'=>'Utah', 'emails'=>18],
  ['State'=>'Arizona', 'emails'=>32],
  ['State'=>'California', 'emails'=>28],
];

$result = [];
foreach (array_merge($array1, $array2) as $item) {
    if (isset($result[$item['State']])) {
        $result[$item['State']] = array_merge($result[$item['State']], $item);
    } else {
        $result[$item['State']] = $item;
    }
}
$result = array_values($result);

print_r($result);

The output:

Array
(
    [0] => Array
        (
            [State] => Utah
            [users] => 5
            [emails] => 18
        )

    [1] => Array
        (
            [State] => California
            [users] => 10
            [emails] => 28
        )

    [2] => Array
        (
            [State] => Arizona
            [emails] => 32
        )
)