我有一个脚本可以提取XML信息,然后将其放入JSON格式。我正在尝试更改变量名称,因为在将json解码后,我将所有内容都放入表格中进行转换。
例如,有11个分数将被列出,而不是写出所有11个我想在循环发生时动态更改名称。我遇到的问题是在studentInformation.php文件中,我在旁边放了一条注释,以便更容易发现。希望我已经很好地解释了我的问题:P
xml文件中的节点(是的,它只是第一个标签,但你明白了)
<set1score>
<set2score>
<set3score>
<set4score>
<set5score>
<set6score>
<set7score>
<set8score>
<set9score>
<set10score>
<set11score>
xmlParse.php
<?php
class xmlParse
{
private $xmlFile;
public function __construct($xmlFile)
{
$this->xmlFile = $xmlFile;
}
private function xmlVerify($p)
{
return pathinfo($p,PATHINFO_EXTENSION)=='xml';
}
public function encodeJSON()
{
if($this->xmlVerify($this->xmlFile))
{
$xml = simplexml_load_file($this->xmlFile);
return json_encode($xml->children());
}
else
{
return ('<script>alert(\'error with xml file validation\');</script>');
}
}
}
?>
studentInformation.php
<?php
class studentInformation extends xmlParse
{
private $xmlFile;
public function __construct($xmlFile)
{
parent::__construct($xmlFile);
}
private function decodeJSON($i)
{
$j = json_decode($i);
return $j;
}
public function getStudentInformation()
{
$output = '';
$count = 1;
foreach($this->decodeJSON($this->encodeJSON($this->xmlFile))->student as $v)
{
$output .= "<tr>";
$output .= "<td>" . $v->lname . "</td>";
$output .= "<td>" . $v->fname . "</td>";
$output .= "<td>" . $v->set($count)score . "</td>"; //PROBLEM HERE!!!!!
$output .= "</tr>";
$count++;
}
return $output;
}
}
?>
答案 0 :(得分:3)
可怕的糟糕设计。为什么不......
<score num="1">
<score num="2">
etc...
只有在您需要访问特定分数时才需要这样的参考。如果您只是使用XML作为临时存储介质进行传输,那么即使是简单的<score>
也可以,因为您只需要迭代/提取/销毁。
答案 1 :(得分:0)
试试这个:$output .= "<td>" . $v->'set'.$count.'score' . "</td>";
答案 2 :(得分:0)
创建动态变量:
$setCount = 'set' .$count. 'score';
$$setCount = $score;