Добавить элемент массива в файл
нужно в массив из файла list.php добавить запись по ключу
list.php
return [
'authorize' => [
'account/profile',
'account/settings',
],
'guest' => [
'account/register',
'account/login',
'admin/login',
],
'admin' => [
'admin/main',
],
];
Нужно к примеру по ключу 'admin' добавить еще одно значение 'admin/settings',
class Settings {
static $cfg = null;
public static function load(){
static::$cfg = include "file.php";
foreach(static::$cfg as $k => $v){
if(!defined($k)){
define($k, $v);
}
}
}
public static function set($key, $value){
static::$cfg[$key] = $value;
}
public static function save(){
$content = "<?php".PHP_EOL."\treturn\t".var_export(static::$cfg, true);
file_put_contents("file.php", $content);
}
}
Settings::load();
Settings::set('admin', 'admin/settings');
Settings::save();
Как сделать:
что бы скрипт добавлял запись по ключу
не удалял в конце ;
- что бы верно работало в методе set должно быть так:
static::$cfg[$key][] = $value;
- что бы не удаляло ; (точку из запятой) в конце массива, нужно:
file_put_contents("file.php", $content.";");
Ответы (1 шт):
Автор решения: MARSHAL
→ Ссылка
Предлагаю вам следующий вариант для решение данной проблемы:
Хранить массив (я так понял что вы с MVC боритесь) в файле list.php в JSON формате. Если потребуется получить данные или записать воспользуйтесь функциями ниже:
Получить массив из файла list.php
function get_list ($path) {
if (!file_exists($path) return false;
$json = file_get_contents($path);
return json_decode($json, true);
}
Записать измененный массив в libs.php
function set_list ($path, $array) {
file_put_content($path, json_encode($array));
}