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