2011-11-16 2 views
0

ベースドメインのURL(http://www.site.com)を見て、すべてのリンクを見つけて、各ページのすべてのイメージとその属性を見つけるルーチンを持っています。リンクのなぜこの配列は重複を削除したくないのですか?

  • 一つの第一、及び各ページにある各画像に対する各リンク
  • 一方の各ループ内:これは、2つのforループで行われます。

私はバンドのウェブサイトをテストベッドとして使用していました。先頭の各ページには、特集記事の「スポットライト」セクションがあり、画像スライダーとして設定されています。だから、私は、ユニークな画像URLをウェブサイトだけにしたいのですが、私が試みているすべてのことは、まだ複製を通しています。私はアレイを構築している間に二重チェックを試みましたが、それは無駄でした。しかし、私はこのリンクを発見した:How to remove duplicate values from a multi-dimensional array in PHPとコメントが、これはどちらも動作しません。

私は自分のバンドのウェブサイトから掻き取ったデータのサンプル列で始まるのをしてみましょう:

Array 
(
[http://darwenstheory.com/] => Array 
    (
     [0] => Array 
      (
       [3] => Array 
        (
         [url] => http://darwenstheory.com/images/dtheory-spotlight-vidclips.jpg 
         [alt] => Ventura Theater Video Clips Posted! 
         [w] => 644 
         [h] => 202 
         [ratio] => 3.2 
        ) 

      ) 

     [1] => Array 
      (
       [3] => Array 
        (
         [url] => http://darwenstheory.com/images/dtheory-spotlight-vtpix.jpg 
         [alt] => Video Clips Posted! 
         [w] => 644 
         [h] => 202 
         [ratio] => 3.2 
        ) 

      ) 

     [2] => Array 
      (
       [3] => Array 
        (
         [url] => http://darwenstheory.com/images/dtheory-spotlight-merch.jpg 
         [alt] => Photos from Ventura Theater! 
         [w] => 644 
         [h] => 202 
         [ratio] => 3.2 
        ) 

      ) 

     [3] => Array 
      (
       [4] => Array 
        (
         [url] => http://darwenstheory.com/wp-content/uploads/2011/10/peepdestroyflyer.jpg 
         [alt] => 
         [w] => 533 
         [h] => 800 
         [ratio] => 0.7 
        ) 

      ) 
[http://darwenstheory.com/2011/01/11/ventura-theater-video-clips-posted/] => Array 
    (
     [0] => Array 
      (
       [3] => Array 
        (
         [url] => http://darwenstheory.com/images/dtheory-spotlight-vidclips.jpg 
         [alt] => Ventura Theater Video Clips Posted! 
         [w] => 644 
         [h] => 202 
         [ratio] => 3.2 
        ) 

      ) 

     [1] => Array 
      (
       [3] => Array 
        (
         [url] => http://darwenstheory.com/images/dtheory-spotlight-vtpix.jpg 
         [alt] => Video Clips Posted! 
         [w] => 644 
         [h] => 202 
         [ratio] => 3.2 
        ) 

      ) 

     [2] => Array 
      (
       [3] => Array 
        (
         [url] => http://darwenstheory.com/images/dtheory-spotlight-merch.jpg 
         [alt] => Photos from Ventura Theater! 
         [w] => 644 
         [h] => 202 
         [ratio] => 3.2 
        ) 

      ) 

上記アレイでは、私は最初の3つの画像のURLのURLである第二インデックス(のためにしてはなりませんドメイン上のサブページ)。私は、アレイを構築するために使用しています何の 簡体字版:

foreach($links as $link) 
{ 
    $images = get_page_images($link); //array; 
    foreach($images as $image) 
    { 
     //i have some things here to setup a "score" for each image 
     $data['scrape'][$link][][$score] = array('url' => $image['url'], 'alt' => $image['alt'], 'w' => $image['w'], 'h' => $image['h'], $ratio); 
    } 
} 

は私が上に複雑この午前気持ちを持っていますが、私は考えどのようにまたはなぜを持っていません。私は愚かであるかどうかを学ぶためにここにいる。

私は上記の配列を作成したいと思います。最深レベルの配列に 'url'キーの重複値がないようにしています。

ありがとう、あまりにも先に、批判、助け、そしてすべてのことのために。

答えて

0

配列構築しながら、私はまだデュープチェックを行いたい:

$urls = array(); 

foreach($links as $link) 
{ 
    $images = get_page_images($link); //array; 
    foreach($images as $image) 
    { 
     if (!$urls[$image['url']])  // <- dupe check added 
     { 
      $urls[$image['url']] = true; // <- dupe check added 

      //i have some things here to setup a "score" for each image 
      $data['scrape'][$link][][$score] = array('url' => $image['url'], 'alt' => $image['alt'], 'w' => $image['w'], 'h' => $image['h'], $ratio); 
     } 
    } 
} 
0

を見て多くのですが、バット、私は、各反復を比較し、唯一追加するベース・アレイを開始することをお勧めかもしれませんキーがベース配列に存在しない場合は配列に...

$image_arr = array(); 
foreach($links as $link) 
{ 

    $images = get_page_images($link); //array; 
    foreach($images as $image) 
    { 
     if(!in_array($image['url'], $image_arr)) 
     { 
      //i have some things here to setup a "score" for each image 
      $data['scrape'][$link][][$score] = array('url' => $image['url'], 'alt' => $image['alt'], 'w' => $image['w'], 'h' => $image['h'], $ratio); 
      $images_arr[$image['url'] = $image['url'; 
     } 
    } 
} 
+0

ありがとう。私はちょうど「チェック・オン・ザ・フライ」できると思っていたので、私が構築していた実際のアレイを別のものではなくチェックするだけで動作します。しかし、それが必要なのかどうかは私には分かります! – Kinsbane

関連する問題