Вы можете достичь этого, используя array_reduce
для обработки вашего массива.Внутри функции мы используем preg_match
, чтобы разбить строку на составные части (заметьте, что вы могли бы просто использовать вместо explode(':', $v)
и trim
).
$array = array('Height: 3/16',
'Color: Standard Red',
'Material: Die-cut, pressure-sensitive paper');
$new_array = array_reduce($array,
function ($c, $v) { preg_match('/^([^:]+):\s+(.*)$/', $v, $m);
return array_merge($c, array($m[1] => $m[2]));
},
[]);
print_r($new_array);
Вывод:
Array (
[Height] => 3/16
[Color] => Standard Red
[Material] => Die-cut, pressure-sensitive paper
)
Демонстрация на 3v4l.org