В вашем скрипте есть несколько ошибок, которые объясняют, почему он не работает. Во-первых, ваш массив $response
не выглядит правильным. Вы действительно намеревались использовать переменные вместо ключей? Попробуйте print_r($response);
и посмотрите, действительно ли это то, что вы хотите.
Вы можете выбрать nth <question/>
, используя обозначение массива (на основе 0), как в
$results->question[$i]
Как только вы получите правильный вопрос, все, что вам нужно сделать, это убедиться, что он действительно содержит предложенный ответ с XPath. Только тогда вы можете увеличить значение <responses/>
. Кроме того, вы должны экранировать специальные символы, такие как <
или "
, которые могут привести к сбою вашего запроса XPath.
Наконец, вы можете использовать asXML()
для фактического сохранения файла (здесь не требуется file_put_contents()
). Я предполагаю, что ваш $surveyResults
является опечаткой, и вы имели в виду $surveyResultsFile
.
$response = array(
'sid' => session_id(),
'answers' => array(
$_POST['input1']
)
);
$results = simplexml_load_file($surveyResultsFile);
foreach ($response['answers'] as $i => $answer) {
$title = htmlspecialchars($answer);
$a = $results->question[$i]->xpath('answer[title="' . $title . '"]');
if (empty($a))
{
echo "No answer '$title' for question $i\n";
continue;
}
++$a[0]->responses;
}
$results->asXML($surveyResultsFile);