<?php
$input = [
'a.b.c.d = 1',
'a.b.c.e = Joey',
'a.b.c.f = Smith',
'a.b.g.d = 2',
'a.b.g.e = Chris',
'a.b.g.f = Divner'
];
$data = [];
$cleanKeys = [];
foreach($input as $record) {
$equals = strrpos($record, '=');
$value = trim(substr($record, $equals+1));
$key = trim(substr($record, 0, $equals));
$lastDot = strrpos($key, '.');
$appKey = substr($key, $lastDot+1);
$curKey = substr($key, 0, $lastDot);
$data[$curKey][$appKey] = $value;
if (strpos($curKey, '.') !== FALSE) {
$cleanKeys[] = $curKey;
}
}
var_dump($data);
foreach($data as $k => $v){
$keys = explode('.', $k);
$firstKey = array_shift($keys);
$newData = [];
while($key = array_pop($keys)) {
if (count($newData) === 0) {
$newData[$key] = $v;
} else {
$newData = [$key => $newData];
}
}
$data = array_merge_recursive($data, $newData);
unset($data[$k]);
}
var_dump($data);
preferences:
28.1 ms | 402 KiB | 5 Q