dpts
Новичок
Приветствую.
Имеем файл conf.php:
Надо превратить массив $siteVars в JSON и сохранить в файл conf.json с тем чтобы в последствии этот conf.json использовать и "уйти" от conf.php (совсем).
С эти успешно справляемся, однако когда начинаем читать json из созданного файла, json_decode возвращает строку а не массив, при этом, если результат работы json_encode в файл не записывать а сразу декодировать обратно, то все - хорошо, возвращается массив.
Код обработки массива из conf.php:
Подскажите, где собака порылась, почему так странно ведет себя json_decode и как заставить ее парсить json из файла в массив?
Имеем файл conf.php:
PHP:
<?php
$siteVars = array(
'siteLang' => '',
'sitename' => '',
'siteEmail' => '',
'adminEmail' => '',
'semdMethod' => 0,
'smtphost' => '',
'smtplogin' => '',
'smtppass' => '',
'smtpport' => 25,
'script' => '',
'dbHost' => '',
'dbUser' => '',
'dbPass' => '',
'dbName' => '',
'siteDarkHex' => '',
'siteDarkRGB' => '',
'siteLightHex' => '',
'siteLightRGB' => '',
'galleryHighlightHex' => '',
'galleryHighlightRGB' => '',
'feedbackColorSheme' => '',
'sliderImgFolder' => '',
'bcDividerHex' => '',
'bcDivider' => '',
'namingMode' => 2,
'headerParallax' => 0,
'useCash' => 1,
'categoryViewMode' => 2,
'categoryViewSymbols' => 100,
'irc' => '',
'irc-secret' => '',
'prevSend' => 0,
'sendInterval' => 180,
'devMode' => 0
)
?>
С эти успешно справляемся, однако когда начинаем читать json из созданного файла, json_decode возвращает строку а не массив, при этом, если результат работы json_encode в файл не записывать а сразу декодировать обратно, то все - хорошо, возвращается массив.
Код обработки массива из conf.php:
PHP:
<?php
error_reporting(E_ALL);
ini_set('display_errors', true);
ini_set('error_reporting', E_ALL);
$config = 'conf.php';
$configJSON = 'conf.json';
if ( file_exists($config) ){
include($config);
if ( !file_exists($configJSON) ){
$configContent = json_encode($siteVars);
if ( file_put_contents($configJSON, json_encode($configContent)) ){
echo 'Конфигурация сохранена в файле <b>'.$configJSON.'</b><br><hr>';
echo '<p>';
var_dump(json_decode(file_get_contents($configJSON),true));
echo '</p><hr>';
}else{
echo 'Ой! Конфигурация <b><u>не</u><b> сохранена в файле <b>'.$configJSON.'</b>';
}
} else {
if ( !is_array(json_decode(file_get_contents($configJSON),true)) ){
echo 'json_decode <b><u>не</u></b> сработал</u></b> с содержимым файла '.$configJSON.' и вернул не массив.<br>';
echo '<p>';
var_dump(json_decode(file_get_contents($configJSON)),true);
echo '</p><hr>Ошибок перекодировки json: '.json_last_error().'шт.<br><hr><p></p>';
} else {
echo 'json_decode <b><u>сработал</u></b> с содержимым файла '.$configJSON.' и вернул массив.<br>';
echo '<p>';
var_dump(json_decode(file_get_contents($configJSON)),true);
echo '</p><hr>Ошибок перекодировки json: '.json_last_error().'шт.<br><hr><p></p>';
}
echo '<p>';
echo 'Прямая перекодировка туда-обратно без записи json в файл.<br>';
if ( is_array(json_decode(json_encode($siteVars),true)) ){
echo 'Работает и возвращает массив:<br>';
var_dump (json_decode(json_encode($siteVars),true));
echo '<br>';
} else {
echo 'Не работает и возвращает не массив:<br>';
var_dump (json_decode(json_encode($siteVars),true));
echo '<br>';
}
echo '</p><hr>Ошибок перекодировки json: '.json_last_error().'шт.<br><hr><p></p>';
}
}else{
echo '<p>Файл <b>'.$config.'</b> не существует</p></hr>';
}
?>