2013-02-11 97 views
0

我遇到圖像問題。PHP處理重複元素

我嘗試添加一個圖像ID,當用戶點擊圖像和id將被保存到數據庫。

當頁面重新加載時,具有id屬性的圖像將在img標籤中顯示id。

我標識具有id屬性的圖像的方式基於圖像src。 但是,我發現有很多重複的圖像,我的代碼會將所有重複圖像的id屬性添加到 。

我只希望添加用戶點擊的圖像的id屬性。

我的代碼

this.id是圖像的新的id屬性,它從數據庫中產生。

//click image codes.... 
//assign the id to the clicked image (not all duplicated images) 
this.img.attr('id',this.id); 

時重新加載頁面...

$doc = new DOMDocument(); 
$doc->loadHTML($myHtml); 

      $imageTags = $doc->getElementsByTagName('img'); 

      //get the images that has id attribute from DB 
      $imgSource=$this->imgSource; //imgSource is an array 
      $imgID=$this->imgID;   //imgID is an array 

      //search the htmlstring and add the id attribute to the images 
      foreach($imageTags as $tag) { 
      $source=$tag->getAttribute('src'); 

      //if the html contains the image that has id attribute.. 
       if(in_array($source, $imgSource)){ 

       $ids=array_keys($imgSource,$source); 
       foreach($ids as $id){ 
        $tag->setAttribute('id',$imgID[$id]); 
        $myHtml=$doc->saveHTML(); 
       } 
       } 
      } 
      } 

我上面的代碼將ID分配到已經存儲在數據庫ID圖像。但是,它也會將 分配給所有重複的圖像。我需要區分這些重複的圖像,我只能在我的情況下使用php。這個問題讓我瘋狂!如果有人能幫助我,我將不勝感激。非常感謝。

回答

1

如果問題是要區分重複,那麼避免它們的適當部分是更改代碼添加到重複圖像的代碼,不是嗎?

我不完全理解的PHP代碼如何發佈與IDS的作品,但我想$this->imgSource$this->imgID是這樣的:

$this->imgSource = array(
    [0] => 'src/image/a', 
    [1] => 'src/image/b', 
    [2] => 'src/image/c', 
    [3] => 'src/image/a' 
); 
$this->imgID = array(
    [0] => 111, 
    [1] => 222, 
    [2] => 333, 
    [3] => 444 
); 

所以當$source'src/image/a'它會做這樣的事情:

$tag->setAttribute('id', 111); 
$tag->setAttribute('id', 444); 

如果這是你想要避免的,我建議刪除id值以防止再次使用它。

$ids = array_keys($imgSource, $source); 
foreach($ids as $id) { 
    if(isset($imgID[$id])) { 
     $tag->setAttribute('id', $imgID[$id]); 
     $myHtml = $doc->saveHTML(); 
     unset($imgID[$id]); 
     break; 
    } 
} 
+0

非常感謝你一個Rodas。你很明白我的問題。我很感激。只有當用戶點擊第一張重複的圖像時,取消設置纔有效。如果用戶單擊第二或第三張圖像,則不會爲其分配標識,因爲代碼找到了第一張圖像的圖像來源。 +1 – FlyingCat 2013-02-12 00:25:45

+0

然後,只有當用戶點擊一個沒有重複的圖像時,它纔會起作用嗎?我想我可能在這句話中錯過了一些東西:「它不會將id分配給他們,因爲代碼找到了第一張圖片的圖片來源。」 – 2013-02-12 00:46:49

+0

是的,它只適用於圖像不重複的情況。我的錯。 – FlyingCat 2013-02-12 01:06:34