2011-11-16 3 views
0

기본 도메인 URL (http://www.site.com)을보고 모든 링크를 찾은 다음 각 페이지의 모든 이미지와 속성을 찾는 루틴을 가지고 있습니다. 링크에 대한왜이 어레이는 복제물을 제거하지 않습니까?

  • 하나의 제, 각각의 페이지에서 볼 각 이미지에 대한 각 링크
  • 하나의 각 루프 내부 :이 두 for 루프에서 수행된다.

나는 밴드의 웹 사이트를 테스트 베드로 사용했으며 상단의 각 페이지에는 추천 기사의 "스포트라이트"섹션이 있으며 이미지 슬라이더로 설정되어 있습니다. 그래서, 나는 오직 유일한 이미지 URL을 웹 사이트에 넣기를 원하지만, 내가 시도하고있는 모든 것은 여전히 ​​복제물을 통과시키는 것이다. 배열을 만드는 동안 속보 체크를 시도했지만 그게 효과가 없었습니다. 그러나 그때 나는이 연결을 발견했다 : How to remove duplicate values from a multi-dimensional array in PHP 및 코멘트, 그러나 이것은 역시 작동하지 않는다. 내가의 URL 인 (2 인덱스의 처음 세 개의 이미지 URL의이 없어야 위의 배열에서

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 
        ) 

      ) 

:

의 내가 내 밴드의 웹 사이트에서 긁어 데이터의 샘플 배열 시작하자 도메인의 하위 페이지). 내가 배열을 구축하기 위해 사용하고 무엇을 단순화 된 버전 :

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

감사합니다. 나는 단지 "check-on-the-fly"할 수 있다고 생각 했었습니다. 말하자면, 제가 별도로 준비하지 않고 실제 배열을 확인하는 것만으로도 작동 할 것입니다. 그러나, 그것이 그것이 필요한 것 같아요! – Kinsbane

관련 문제