Вам нужно будет сделать несколько вещей, прежде чем начать.
Во-первых, переименуйте функцию trim
во что-то вроде extract_name
, потому что PHP уже имеет встроенную функцию trim
, которая удаляет пробел из строки - или любой символ, присутствующий в маске символа.
Во-вторых, вам нужно будет перебирать каждый элемент в столбце имени. Вы заметите ошибку, которую вы получаете от preg_match
, потому что вы передаете все значения за один раз.
В-третьих, я предполагаю, что значение $d
является массивом объектов PHP. Это сделано, и предполагается, что в моем решении, используя $d = json_decode($d);
.
Использование array_map
вместо foreach означает, что у нас может быть хороший лайнер:
function extract_name($d) {
preg_match('#\[(.*?)\]#', $d, $match);
return $match[1];
}
$dData = array_combine(array_map('extract_name', array_column($d, 'name')), array_column($d, 'value'));
Вывод:
array:6 [
"id" => "10"
"name" => "Telefon2"
"uuid" => "bb80878ad4"
"productgroup" => "6"
"category" => "1"
"documents" => "7"
]
Демонстрационная версия