У меня есть следующий XML $ результатацикл через PHP XML_Parser и превратить в массив для удобства
<Response>
[.....]
<Questions>
<Question type="1" text="Which one of their favorite color?">
<Answer correct="false">RED</Answer>
<Answer correct="false">BLUE</Answer>
<Answer correct="true">BLACK</Answer>
<Answer correct="false">YELLOW</Answer>
</Question>
<Question type="2" text="What is their favorite food?">
<Answer correct="false">PIZZA</Answer>
<Answer correct="false">TACOS</Answer>
<Answer correct="true">CAKE</Answer>
<Answer correct="false">CHEESE</Answer>
</Question>
<Question type="3" text="Which person do they hate the most?">
<Answer correct="false">Bill</Answer>
<Answer correct="true">Jack</Answer>
<Answer correct="false">Jammie</Answer>
<Answer correct="false">Rick</Answer>
</Question>
</Questions>
</Response>
Я знаю, что я хотел бы использовать ...
$xml = simplexml_load_string($result);
Это установит $ XML к результату объекта SimpleXML. Я хотел бы знать, как лучше всего перебирать текст этих вопросов, чтобы я мог потянуть все вопросы и добавить их в массив, а затем легко ссылаться на них по типу #, текст вопроса и отвечать, поэтому я могу просто сделать
$QuestionText = $array["1"]["text"] //Which one is their favorite color?
$QuestionAnswer = $array["1"]["answer"] //BLACK
EDIT # 1
в то время как у меня не было ответа назад еще я пытался понять это сам, и я изменил свой метод к XML_Parser ...
$xml_parser = xml_parser_create();
xml_parser_set_option($xml_parser,XML_OPTION_CASE_FOLDING,0);
xml_parser_set_option($xml_parser,XML_OPTION_SKIP_WHITE,1);
xml_parse_into_struct($xml_parser, $result, $vals,$index);
xml_parser_free($xml_parser);
$newResArr = array();
foreach($vals as $val)
{
if(($val['tag']=='Question')) {
if(isset($val['attributes'])){
$type = $val['attributes']['type'];
$newResArr[$type]['text'] = $val['attributes']['text'];
//I assume a foreach needs to be put here?
}
}
}
Теперь я могу ссылаться на текст, выполняя $ newRes Arr ['1'] ['text'], и я получаю то, что хочу, однако я не знаю, как настроить цикл foreach, как описано выше, чтобы вывести ответ, если для его атрибута установлено значение true.
Вы действительно хотите преобразовать и получить доступ к нему в виде массива? –
Lol, да вот почему я пытаюсь это сделать :) – eqiz
потому что simplexml_load_string возвращает объект, и вы можете получить доступ к объекту, хотя его не массив –