21,886
社区成员
发帖
与我相关
我的任务
分享
echo $urls->length; //7
foreach ($urls as $k=>$rootdata) {
$rootdata->parentNode->removeChild($rootdata);
}
echo $urls->length; //3
可以看到,尽管你去删除每一记录,但实际上只能删掉 4 条
因为 removeChild($rootdata) 影响了 $urls 总数
而这样
echo $urls->length; //7
$i=0; //计数器
while($i < $urls->length) {
$rootdata = $urls->item($i);
$rootdata->parentNode->removeChild($rootdata);
}
echo $urls->length; //0
可以看到,作为计数器的 $i 的值并没有变,7 条记录却都已经被删去了
由此可知,如果是删除,记录指针是不能变的。因为删去当前,后面的就补上来了$i=0; //计数器
while($i < $urls->length) {
$rootdata = $urls->item($i);
//相关操作
if(要删除吗) {
$rootdata->parentNode->removeChild($rootdata);
}else $i++;
}
删除就不移动指针
$bool = M('account')->where(array('pkid'=>$a_id,'status'=>1,'is_delete'=>2))->getField('pkid');
if(empty($bool)){
$rootdata->parentNode->removeChild($rootdata);
}
看看删除不成功的 $bool是什么。