這是我想要實現的。 我進口產品的XML文件(產品標籤有一個id屬性: 作爲一個例子xml foreach跳過如果在php語句
還有就是我想檢索產品標籤內1個標籤(類別),但我只想要一個實例它。所以我創建了一個標誌,以幫助區分當產品ID的變化。
我的代碼看起來像這樣
<?php
$flag='start';
foreach($xml->product as $product)
{
$attrs = $product->attributes();
echo "$attrs ($flag)"; // just used for testing results
if ($flag != $attrs) {
echo "| <a href='xmltest.php?menuitem=$attrs'>".$product->category." </a><br>";
$flag=$attrs;
}
}
?>
應該在第一次運行會發生什麼是標誌不匹配的attrs,該鏈接被迴應,國旗現在匹配attrs。
如果我有5個ID爲1,1,2,2,2的產品標籤,代碼應該兩次回顯鏈接(首先當$ flag = start,而$ attrs = 1時,以及$ flag = 1 while $ attrs = 2)...
相反,它回聲5次,基本上忽略if語句。
我看不到if語句出錯的地方。誰能幫忙?
更新感謝花灑,我一直在努力您的建議,我比以前更近一點。
我做的var_dump,結果我看到這個樣子的
標誌的var_dump的結果:string(5) 「開始」 ATTRS的var_dump結果:對象(的SimpleXMLElement)#6(1){[ 「@屬性」] =>數組(1){ [ 「ID」] =>串(1) 「0」}} 0(0)
標誌的var_dump結果:對象(的SimpleXMLElement)#6(1) {[「@attributes」] => array(1){ [「id」] => string(1)「0」}}
attrs var_dump result:object (0)
flag var_dump result:#5(1){[「@attributes」] =>數組(1){var id_dump結果:對象(SimpleXMLElement)#5(1){[「@attributes」] =>數組(1){ [「id」] => string(1)「0」}}
attrs var_dump result:object (0)
flag var_dump result:#4(1){[「@attributes」] =>數組(1){「id」] => string(1)「0」}} object(SimpleXMLElement)#4(1){[「@attributes」] => array(1){ [「id」] => string(1)「0」}}
attrs var_dump result:object(SimpleXMLElement)#8(1){[「@attributes」] => array(1){「id」] => string(1)「1」}} 1(1)
標誌的var_dump結果:對象(的SimpleXMLElement)#8(1){[ 「@屬性」] =>數組(1){ [ 「ID」] =>串(1) 「1」}}
我現在明白了$ flag var作爲一個字符串開始,然後採用數組的值。
我試過如果(!is_array($ flag)& & $ flag!= $ attrs){但結果是一樣的。
有沒有另一種方法可以讓我的值比較類似?再次
感謝,
UPDATE
一個簡單的爆炸幫助解決這個問題。這是爲我工作的代碼。
<?php
$flag='start';
foreach($xml->product as $product)
{
$category = $product->category;
$attrsvar = $product->attributes();
$attrs = explode(" ", $attrsvar);
if(! is_array($flag) && $flag != $attrs[0]) {
echo " <a href='xmltest.php?menuitem=".$attrs[0]."'>".$category." </a> | ";
$flag=$attrs[0];
}
}
?>
如果我可以投票,我會。我還沒有足夠的代表 – 2012-04-03 14:53:24
我將你標記爲正確的答案,因爲它確切地指導了我需要完成代碼的位置。你真棒淋浴頭! :) – 2012-04-03 15:16:13
非常感謝,看看更多的想法:) – mseancole 2012-04-03 15:31:26