【发布时间】:2013-06-10 04:32:34
【问题描述】:
我正在编写一个函数来解密 SimpleXML 对象的内容。
function xmlWalkerDecrypt(&$xmlObj, $aesKey) {
if ($xmlObj->count()>0){
foreach($xmlObj as &$child){ //line 154
xmlWalkerDecrypt($child, $aesKey);
}
}
else{
$xmlObj = companyAES($xmlObj, $aesKey, 'decrypt');
}
}
这会在 WAMP 中引发以下错误:
Fatal error: An iterator cannot be used with foreach by reference in C:\wamp\www\_assets\walk.php on line 154
是否可以通过引用编辑而不是输出来遍历 SimpleXML 对象?
我也试过了:
function xmlWalkerDecrypt(&$xmlObj, $aesKey) {
if ($xmlObj->count()>0){
foreach($xmlObj->children() as &$child){ //line 154
xmlWalkerDecrypt($child, $aesKey);
}
}
else{
$xmlObj = companyAES($xmlObj, $aesKey, 'decrypt');
}
}
但这会产生以下错误:
致命错误:无法在第 154 行的 C:\wamp\www_assets\myFile.php 中创建对临时数组表达式元素的引用`
【问题讨论】:
-
&$child 不应该是 $child 吗?
-
我也试过了,但是 else 子句的编辑并没有影响原始对象,即 $child 对象是一个新的独立对象。
标签: simplexml pass-by-reference php