У меня есть следующая ошибка в коде ниже.
Предупреждение: неверный аргумент для foreach() в /admin/controller/module/megamenu.php в строке 263 Список обновлен 15-05-27 23:25:14!
Строка 263: foreach ($jsonArray as $subArray) {
Я проверил на другом сервере и не вижу эту ошибку (php5.4), но появляется мой сервер с php5.3, php5.5. Что пропало?
if (isset($_GET['jsonstring'])) {
if($this->validate()){
$jsonstring = $_GET['jsonstring'];
$jsonDecoded = json_decode(html_entity_decode($jsonstring));
function parseJsonArray($jsonArray, $parentID = 0) {
$return = array();
foreach ($jsonArray as $subArray) {
$returnSubSubArray = array();
if (isset($subArray->children)) {
$returnSubSubArray = parseJsonArray($subArray->children, $subArray->id);
}
$return[] = array('id' => $subArray->id, 'parentID' => $parentID);
$return = array_merge($return, $returnSubSubArray);
}
return $return;
}
$readbleArray = parseJsonArray($jsonDecoded);
foreach ($readbleArray as $key => $value) {
if (is_array($value)) {
$this->model_menu_megamenu->save_rang($value['parentID'], $value['id'], $key, $data['active_module_id']);
}
}
die("The list was updated ".date("y-m-d H:i:s")."!");
} else {
die($this->language->get('error_permission'));
}
}
+ Изменить
$jsonDecoded = json_decode(html_entity_decode($jsonstring));
в
$jsonDecoded = json_decode(html_entity_decode($jsonstring),true);
и $jsonDecoded
будет массивом
Я думаю, что в некоторых случаях мы должны использовать функции implode и explode при работе с json-данными в php, попробуйте это после декодирования ваших json-данных, чтобы преобразовать строку в массив.
html_entity_decode
?$jsonArray
не$jsonArray
до$jsonArray
функцииparseJson()
я думаю, что это ваша проблема