PHP array with array value into multiple arrays with same key Very difficult to explain in a sentence sorry so here is example.
I have this array:
$setParams = [
    'repeat_delay' =&gt; [23, 1],
    'repeat_type' =&gt; ['Hour', 'Day'],
];

that I want to turn into this
$wanted = [
    [
        'repeat_delay' =&gt; 23,
        'repeat_type' =&gt; 'Hour'
    ],
    [
        'repeat_delay' =&gt; 1,
        'repeat_type' =&gt; 'Day'
    ]
];

I have it working but wanting to know if there is a cleaner way, or even another way.
$newArray = [];
$setKeys = array_keys($setParams);
$setValues = array_values($setParams);

$isSetValueArray = array_filter($setValues,
    static function ($setValue) {
        return is_array($setValue);
    });

if (!empty($isSetValueArray)) {
    foreach ($setKeys as $keyCount =&gt; $key) {
        foreach ($setValues as $valueCount =&gt; $value) {
            if (is_array($value)) {
                foreach ($value as $k =&gt; $v) {
                    if ($keyCount === $valueCount) {
                        $newArray[$k][$key] = $v;
                    }
                }
            }
        }
    }
}

Some more information to help others. I am sorry I didn't provide sooner as I know context is everything.
Here is a link to my snippet with more info and complete example.
https://gitlab.mrwilde.solutions/-/snippets/18
Assuming you have the same number of items for each key, here are two alternative approaches:
Foreach:
&lt;?php
$setParams = [
    'repeat_delay' =&gt; [23, 1],
    'repeat_type'  =&gt; ['Hour', 'Day'],
];

$i = 0;
foreach($setParams['repeat_delay'] as $k =&gt; $v) {
    $result[$i]['repeat_delay'] = $v;
    $result[$i]['repeat_type']  = $setParams['repeat_type'][$k];
    $i++;
}

Array map:
$result = array_map(null, ...array_values($setParams));
$keys   = array_keys($setParams);
$result = array_map(function($v) use ($keys) { return array_combine($keys, $v);}, $result);

Both result in $result holding the following:
array (
  0 =&gt; 
  array (
    'repeat_delay' =&gt; 23,
    'repeat_type' =&gt; 'Hour',
  ),
  1 =&gt; 
  array (
    'repeat_delay' =&gt; 1,
    'repeat_type' =&gt; 'Day',
  ),
)

You could rewrite the last array_map with the array_combine to:
$result = array_map(fn($v) =&gt; array_combine($keys, $v), $result);

Using a short arrow function for brevity.