0
我遇到以下代码的问题。变量$ entry永远不会变得大于1.我希望它增加以便能够取所有关键字并将它们放入单个变量中。我无法找到为什么$条目递增的原因。提前致谢! :-)SimpleXML中递增变量
function objectsIntoArray($arrObjData, $entry, $arrSkipIndices = array()) {
`$arrData = array();`
$kwords=array();
// if input is object, convert into array
if (is_object($arrObjData)) {
$arrObjData = get_object_vars($arrObjData);
}
if (is_array($arrObjData)) {
foreach ($arrObjData as $index => $value) {
if ($index=="keywordterm"&&$index!="0"){
$kword=$arrObjData[$index];
//echo "arrObjData[$index]: ".$kword."</br></br>";
$kwords[$entry]=$kword;
//echo "keywords: ".$kwords."</br></br>";
//echo "keywords[$entry]: ".$kwords[$entry]."</br></br>";
$entry++;
}
if (is_object($value) || is_array($value)) {
$value = objectsIntoArray($value, $entry, $arrSkipIndices); // recursive call
}
if (in_array($index, $arrSkipIndices)) {
continue;
}
$arrData[$index] = $value;
//echo "$arrData[$index]: ".$arrData[$index]."</br>";
}
}
return $arrData;
}
`$entry=0;
$xmlUrl = "9424.xml"; // XML feed file/URL
$xmlStr = file_get_contents($xmlUrl);
$xmlObj = simplexml_load_string($xmlStr);
$arrXml = objectsIntoArray($xmlObj, $entry);`
随着第一执行它表明: 关键字[0]:电信计算
随着第二它显示: 关键字[0]:多代理系统
您看到?这是0再次....
从XML小码:
<keywordset keywordtype="Inspec">
<keyword>
<keywordterm><![CDATA[telecommunication computing]]></keywordterm>
</keyword>
<keyword>
<keywordterm><![CDATA[multi-agent systems]]></keywordterm>
</keyword>
<keyword>
<keywordterm><![CDATA[state estimation]]></keywordterm>
</keyword>
<keyword>
<keywordterm><![CDATA[control engineering computing]]></keywordterm>
</keyword>
<keyword>
<keywordterm><![CDATA[telecommunication control]]></keywordterm>
</keyword>
</keywordset>
谢谢!它工作正常!我无法想象会造成这样的问题......你确切知道为什么?你说我试图改变参数而不参考对象。这就是为什么入口变量不会改变?再次感谢你!! – 2012-07-15 09:47:23
@ApostolosKou,如果这有帮助,并且它是正确答案,您是否可以通过单击我答案旁边的打勾来标记为正确答案?如果您有任何进一步的问题,这对未来也有帮助,因为它会提高您的接受评级。很多谢谢 – craig1231 2012-07-15 10:18:12
@ApostolosKou,如果你不指定一个&它会基本上复制对象,所以它从原始内存中取消分配。通过使用&,它直接引用对象,而不是复制它。 – craig1231 2012-07-15 10:20:22