Pro práci s formátem NEON používám komponentu z frameworku Nette.
use Nette\Neon\Neon;
Uložení struktury NEON do databáze:
$data = Neon::decode(file_get_contents('cesta_k_souboru.neon'));
foreach($data as $key => $item) {
buildSQL($item, $key);
}
function buildSQL($item, $key) {
if (!is_array($item)) {
dibi::query("INSERT INTO db_table (code, value) VALUES (%s, %s)", $key, $item);
} else {
foreach($item as $key2 => $item2) {
$keyPom = $key . '.' . $key2;
buildSQL($item2, $keyPom);
}
}
}
Výpis do formátu NEON zpět z databáze:
function buildArray(&$arr, $path, $value) {
$keys = explode('.', $path);
foreach ($keys as $key) {
$arr = &$arr[$key];
}
$arr = $value;
}
$result = dibi::query("SELECT code, value FROM db_table")->fetchPairs();
$arr = [];
foreach($result as $key => $value) {
buildArray($arr, $key, $value);
}
echo Neon::encode($arr, Neon::BLOCK);
únor 2019