简介
我在SQL中有一些代码。我在php中的while循环中按代码进行代码,并在XML feed中搜索这些代码。
程序代码
我有以下程序代码
$x_search = $xml->xpath("//Item[@Sort='$sort']");
if(!$x_search){
$x_Id = $x_search[0]->attributes()->Id;
echo $sort." - ".$x_Id."<BR />";
}
问题
有些代码可能不在SQL中。所以我收到此错误消息:
Undefined offset: 0 in
如果你在XML中找到它,如何做,$ x_Id = $ x_search [0] - &gt; attributes() - &gt; Id;?
我已经尝试过了:
示例XML:
<?xml version="1.0" encoding="utf-8"?>
<Root>
<Item Id="12860" IdP="-2147483648" Sort="0001KC" Name="Computers">
<StoItem />
</Item>
</Root>
$sort
的示例:
00004M
12860
12859
12859
12861
12861
12862
12862
12863
12863
12864
谢谢
答案 0 :(得分:0)
这是XML的一个例子。我写的有可能,有些代码不在SQL中。这就是我需要解决这个问题的原因。只有当你在XML中找到这种类型时才会给我写一个回音。
<?xml version="1.0" encoding="utf-8"?>
<Root>
<Item Id="12860" IdP="-2147483648" Sort="0001KC" Name="Computers">
<StoItem />
</Item>
</Root>
输入不变$ sort
的代码列表的开头00004M
12860
12859
12859
12861
12861
12862
12862
12863
12863
12864
答案 1 :(得分:0)
SimpleXMLElement::xpath()
始终返回SimpleXMLElement
个对象的数组。如果没有匹配,则数组为空。如果表达式无效(编程错误),结果可能等于false。因此,if (!empty($x_search)) ...
或if ($x_search) ...
可用作检查结果的条件。 false
是空值,空数组等于false
。如果表达式的结果是至少包含单个元素的数组,则两个条件都只是true
。
$xmlString = <<<'XML'
<?xml version="1.0" encoding="utf-8"?>
<Root>
<Item Id="12860" IdP="-2147483648" Sort="0001KC" Name="Computers">
<StoItem />
</Item>
</Root>
XML;
$xml = new SimpleXmlElement($xmlString);
$sort = '0001KC';
$x_search = $xml->xpath("//Item[@Sort='$sort']");
if (!empty($x_search)) {
$x_Id = $x_search[0]->attributes()->Id;
echo $sort." - ".$x_Id."<BR />";
}
0001KC - 12860<BR />
$sort
的大多数示例值看起来都像Id
属性值。第二个是示例XML中的Id属性值。
如果要匹配Id属性,则Xpath表达式为:
//Item[@Id='$sort']
甚至可以匹配这两个属性:
//Item[@Id='$sort' or @Sort='$sort']