У меня есть структуру XML, которая выглядит следующим образом:PHP SimpleXML с XPath
<?xml version="1.0"?>
<survey>
<responses>0</responses>
<question>
<title>Some survey question</title>
<answer>
<title>Answer 1</title>
<responses>0</responses>
</answer>
<answer>
<title>Answer 2</title>
<responses>0</responses>
</answer>
...
</question>
...
</survey>
Я хочу, чтобы увеличить <responses>
значения для ответов, которые соответствуют значениям в $response
массиве. Вот как структурирован $response
массива:
$response = array(
'sid' => session_id(),
'answers' => array(
$_POST['input1'],
$_POST['input2'],
...
)
);
У меня есть SimpleXMLElement называется $results
для моего файла обследование XML. Вот как я собираюсь об этом:
$results = simplexml_load_file($surveyResultsFile);
$i = 1;
foreach($response->answers as $answer) {
$r = $results->xpath("question[$i]/answer[title='$answer']/responses");
$r = $r[0];
$r = intval($r) + 1;
$i++;
}
file_put_contents($surveyResultsFile, $results->asXML());
Мои результаты не сохраняются после увеличения значения $r
. Любые идеи о том, что я делаю неправильно? Благодаря!
Спасибо! Ключами массива '$ response', являющимися переменными, была опечатка, как и' $ surveyResults' вместо '$ surveyResultsFile' в конце. Мне определенно нужно изучить XPath и SimpleXML больше, так как это мой первый раз, используя их. – Jared