Обновление этого вопроса ... Я работаю над небольшой CMS. Данные хранятся в формате XML. Я пытаюсь получить доступ к нужному полю изображения, чтобы обновить имя файла и удалить текущее изображение.
Скрипт получает переменные в зависимости от того, откуда он был вызван. В этом случае $ page = "homes", $ elem = "home" и $ field = 0. Ниже вызывается загрузка изображения.
if (!empty($_FILES)) {
$field = $_POST['field'];
$tempFile = $_FILES['upload']['tmp_name'];
$targetFile = "img/sections/".$_POST['page']."/";
$targetFile .= basename($_FILES['upload']['name']);
if (move_uploaded_file($tempFile,$targetFile)) {
$file = "spice.xml";
$load = simplexml_load_file($file);
$old_img = $load->sections->$page->$elem[$field]['img'];
$load->sections->$page->$elem[$field]['img'] = $targetFile;
file_put_contents($file, $xml->saveXML());
unlink($old_img);
}
}
Это структура XML-файла:
<spice>
<sections>
<homes>
<home img="img/sections/home/img1.jpg"/>
<home img="img/sections/home/img2.jpg"/>
<home img="img/sections/home/img3.jpg"/>
</homes>
</sections>
</spice>
Моя проблема в том, что $ old_img выдает ошибку «Невозможно использовать смещение строки в качестве массива». Если я заменю только переменные $ elem и $ field значениями, все будет работать нормально.