2011-11-08 3 views
0

저는 프로그래밍에 익숙하지 않고 2 일 동안이 웹 스크레이퍼를 만들려고 벽에 머리를 두드 리고 있습니다. 원래의 기능 장애를 유지하면서 전체 스크립트 (모든 실제 웹 스크래핑 제거)를 단순화했습니다.간단한 PHP 웹 스크래핑 스크립트가 잘못되었습니다

나는 코드가 훈련 눈에 이해하기에 충분한 쉽게 생각하지만, conveniance 위해 나는 스크립트가하도록되어 있다고 말할 것이다 :

  1. 일부 설정 하위 배열과 배열을 채 웁니다 각 서브 어레이로 값이지만 빈 마지막 서브 어레이 값을 떠나는
  2. a) 다른 기능을 갖는 마지막 서브 어레이 값을 가져, 3 b) 후, 원래의 배열

에 삽입 3.b 스크립트가 실패하는 곳입니다. 값을 입력하지 않습니다 (비어 있음).

필자는 매개 변수없이 함수를 사용하고 있음을 알고 있습니다 (전체 코드에 포함되어 있음).하지만 기능 장애는 그대로 유지됩니다.

+0

-> getcolor() ** 매개 변수가 ** 있습니까? –

+0

이 질문에 대해 이해할 수 없습니다. 그래도 전체 코드에 대한 링크를 제공합니다 : [link] (http://www.matthewwatts.net/tutorials/php-tutorial-2-advanced-data-scraping-using-curl-and-xpath/) GigaWatt 또는 Grok가 제안한 변경 사항, 마침내 작동합니다. 큰 감사합니다! – Martin

+0

GigaWatt 대답 편집에 설명이 있습니다. –

답변

1

foreach 루프가 참조로 전달되지 않습니다 (변경 사항이 적용되지 않습니다).

foreach ($this->cars as &$item)

편집 :로 변경 또한 $this->getcolor($item);과 같은 문제가 될 수 있습니다. 당신이 참고 문헌으로 전달하는 것을 $this->getcolor();

0

솔루션을 할 수 있도록 정의 된 getcolor() 기능은 매개 변수를 사용하지 않지만, 당신이 시도 할 수 있습니다 : $이의 정의의

<?php 
    function __construct() { 
     $this->cars = $this->getcars(); 
     foreach ($this->cars as $item) { 
      $item['color'] = $this->getcolor($item); 
     } 
    } 

    private function getcars() { 
     $data = array(); 
     $listofcars = array('0','1','2'); 
     foreach ($listofcars as $item) { 
      $data[] = array('carname' => 'humvee','color' => ''); 
     } 
     return $data; 
    } 

    private function getcolor() { 
     return 'green'; 
    } 
?> 
관련 문제