SimpleXML 中不再存在节点

发布于 2024-10-28 02:56:09 字数 926 浏览 2 评论 0原文

我有一个似乎无法解决的问题。当 $array 为空时,下面的代码将返回 php 错误“节点不再存在”。如果 $array 不为空,则可以正常工作。当 $array 为空时,$prinid = $array[0]; 行将显示错误。

$doc = new SimpleXmlElement($data, LIBXML_NOCDATA); 

foreach($doc as $a => $b) {
    if ($a == 'principal-list') {
        $array = $b->principal->attributes();
    }
}

$prinid = $array[0];

if (isset($array[0])) {
    $currentuser = 1;
} else {
    $currentuser = 0;
}

更新:

这是我现在所拥有的,我得到:

警告:count() [function.count]:节点不再存在于 * * * * * * *

$doc = new SimpleXmlElement($data, LIBXML_NOCDATA); 

foreach($doc as $a => $b) {
    if ($a == 'principal-list') {
        $array = $b->principal->attributes();
    }
}

$currentuser = 0;
if (isset($array) && count($array) > 0) {
    $prinid = $array[0];
    $currentuser = 1;
}

I have a problem that I cannot seem to fix. The code below will return a php error "Node no longer exists" when $array is empty. If $array is not empty it works fine. The error will show up for the line with $prinid = $array[0]; when $array is empty.

$doc = new SimpleXmlElement($data, LIBXML_NOCDATA); 

foreach($doc as $a => $b) {
    if ($a == 'principal-list') {
        $array = $b->principal->attributes();
    }
}

$prinid = $array[0];

if (isset($array[0])) {
    $currentuser = 1;
} else {
    $currentuser = 0;
}

Update:

Here is what I have now and I get:

Warning: count() [function.count]: Node no longer exists in * * * * * * *

$doc = new SimpleXmlElement($data, LIBXML_NOCDATA); 

foreach($doc as $a => $b) {
    if ($a == 'principal-list') {
        $array = $b->principal->attributes();
    }
}

$currentuser = 0;
if (isset($array) && count($array) > 0) {
    $prinid = $array[0];
    $currentuser = 1;
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

猫性小仙女 2024-11-04 02:56:10

这意味着您尝试获取的属性不存在。您应该检查数组不为空

if (isset($array) && count($array) > 0)
    $prinid = $array[0];

It means that the attribute you are trying to get isn't there. You should check that array isn't empty

if (isset($array) && count($array) > 0)
    $prinid = $array[0];
千纸鹤 2024-11-04 02:56:10
if ($a == 'principal-list' && $b && $b->principal) {
    $array = $b->principal->attributes();
}

重要的事情 - 检查 $b->principal - 您需要检查此 xml 对象是否为空。如果这是 true,那么在任何尝试解析 $b->principal->attributes() 时,您都会收到此错误。

if ($a == 'principal-list' && $b && $b->principal) {
    $array = $b->principal->attributes();
}

Important thing - check $b->principal - you need check this xml object for empty. If it is true then on any try resolve $b->principal->attributes() you can get this error.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文