2017-05-21 14 views
0

私はXMLデータベースの属性からなるナビゲーションを作ろうとしています。要素の中には同じ属性値を持つものもありますが、その値をエコーし​​てみると一度しか機能しません。私はarray_key_exist、in_array、array_searchを試してみたが、一つではない。今、私は2つのサムソンの属性と2つのアイフォーンの属性を持っています。サムスンは2回出演するが、アイフォーンは1回しか出演しない。あなたは私を助けることができます? PHP:XML属性からナビゲーションを行うPHP

<?php 
     $xml = simplexml_load_file("Database/products.xml"); 
     $stack = array(); 
     foreach($xml->Mobile as $phone){ 
      $attr_value = $phone[0]['model']; 
      $attr = (string)$attr_value; 
      $link = "ponuda.php?name=".$attr; 
      $array_check = array_search($attr, $stack); 
      if (!($array_check)) { 
       $stack[] = $attr; 
       echo '<li><a href=' . $link . '>' . $attr . '</a></li>'; 
      } 
     } 
     ?> 

はXML:

<Products> 
    <Mobile model="Samsung"> 
     <Model>Samsung Galaxy A5</Model> 
     <Price>150</Price> 
     <Description></Description> 
     <Picture></Picture> 
     <Screen></Screen> 
     <Memory></Memory> 
     <Android></Android> 
    </Mobile> 
    <Mobile model="Samsung"> 
     <Model>Samsung Galaxy A3</Model> 
     <Price>130</Price> 
     <Description></Description> 
     <Picture></Picture> 
     <Screen></Screen> 
     <Memory></Memory> 
     <Android></Android> 
    </Mobile> 
<Mobile model="Iphone"> 
     <Model>Iphone 8</Model> 
     <Price>500</Price> 
     <Description></Description> 
     <Picture></Picture> 
     <Screen></Screen> 
     <Memory></Memory> 
     <Android></Android> 
    </Mobile> 
    <Mobile model="Iphone"> 
     <Model>Iphone 8+</Model> 
     <Price>450</Price> 
     <Description></Description> 
     <Picture></Picture> 
     <Screen></Screen> 
     <Memory></Memory> 
     <Android></Android> 
    </Mobile> 
</Products> 

答えて

1

あなたはin_arrayを試してみましたarray_unique

$xml = simplexml_load_file($url); 
$stack = array(); 
foreach($xml->Mobile as $phone){ 
    $stack [] = $phone[0]['model']; 
} 

echo '<pre>'. print_r(array_unique($stack),true).'</pre>'; 

結果を使用しようとすることができます こちらです?

<?php 
     $xml = simplexml_load_file("Database/products.xml"); 
     $stack = array(); 
     foreach($xml->Mobile as $phone){ 
      $attr_value = $phone[0]['model']; 
      $attr = trim($attr_value); 
      $link = "ponuda.php?name=".$attr; 
      $array_check = in_array($attr, $stack); 
      if (!$array_check) { 
       $stack[] = $attr; 
       echo '<li><a href=' . $link . '>' . $attr . '</a></li>'; 
      } 
     } 

違い二行$attr = trim($attr_value);$array_check = in_array($attr, $stack);です。

+0

それは魅力として働いた –

0

あなたは

(
    [0] => SimpleXMLElement Object 
     (
      [0] => Samsung 
     ) 

    [2] => SimpleXMLElement Object 
     (
      [0] => Iphone 
     ) 

)