HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > Общие вопросы программирования
   
 
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 04.05.2022, 08:36
Mex-Vision
Постоянный
Регистрация: 01.03.2016
Сообщений: 828
С нами: 5368054

Репутация: 448


По умолчанию

На днях было необходимо сохранять массивы в конфиг файлы, написал функцию для преобразования массива в строковое представление. Возможно кому-то будет нужно, оставлю тут.

PHP:


Код:
/**
 * Возвращает интерпретируемое строковое представление массива.
 * @param array $array Массив.
 * @param bool $beautify Форматировать ли возвращаемую строку.
 * @return string Интерпретируемое строковое представление массива.
 */
function
array_export
(
array
$array
,
bool
$beautify
,
int
$iteration
=
0
)
:
string
{
if
(
empty
(
$array
)
)
return
"[]"
;
$tab
=
$beautify
?
str_repeat
(
"\t"
,
$iteration
)
:
""
;
$result
=
$beautify
?
"[\n"
:
"["
;
$count
=
count
(
$array
)
;
foreach
(
$array
as
$key
=
>
$val
)
{
$count
--
;
$result
.
=
$beautify
?
(
$tab
.
"\t"
)
:
""
;
$result
.
=
to_array_element
(
$key
)
;
$result
.
=
$beautify
?
" => "
:
"=>"
;
if
(
is_array
(
$val
)
)
$result
.
=
array_export
(
$val
,
$beautify
,
$iteration
+
1
)
;
else
$result
.
=
to_array_element
(
$val
)
;
$result
.
=
(
$count
>
0
)
?
","
:
""
;
$result
.
=
$beautify
?
"\n"
:
""
;
}
return
$beautify
?
$result
.
$tab
.
"]"
:
$result
.
"]"
;
}
function
to_array_element
(
$value
)
:
string
{
if
(
is_int
(
$value
)
or
is_float
(
$value
)
)
return
$value
;
if
(
is_bool
(
$value
)
)
return
var_export
(
$value
,
true
)
;
if
(
is_null
(
$value
)
)
return
'null'
;
if
(
is_object
(
$value
)
)
return
get_class
(
$value
)
.
"::class"
;
return
'"'
.
(
(
string
)
$value
)
.
'"'
;
}
Кормим массив, и получаем его строковое представление. В отличии от var_export использует синтаксис массивов PHP 5.4+ и поддерживает форматирование (табуляция, переносы строк и т.п.).

Как использовать?

PHP:


Код:
$config = [
    'config' => [
        'float' => 1.2,
        'string' => 'str',
        'bool' => true,
        'null' => null,
        'object' => new \mmopane\validate\Validator(),
    ]
];

file_put_contents("config.php", " [
        "float" => 1.2,
        "string" => "str",
        "bool" => true,
        "null" => null,
        "object" => mmopane\validate\Validator::class
    ]
];
 
Ответить с цитированием
 





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.