2014-04-18 2 views
0

개체가 Thread_category입니다. 이 메서드는 이라는 메서드를 사용하여 범주가 $category 인 스레드 배열을 출력합니다.Foreach 루프가 배열을 예상대로 출력하지 않습니다.

Array ([0] => Allergic diseases [1] => Allergic asthma [2] => Congenital lung disease [3] => Idiopathic pulmonary fibrosis) 

을 지금, 나는이

$test1 = Thread_category::find_all_by_category('Allergic diseases'); 
    print_r($test1); 
    echo "<br/>"; 
    echo "<br/>"; 

    $test2 = Thread_category::find_all_by_category('Allergic asthma'); 
    print_r($test2); 
    echo "<br/>"; 
    echo "<br/>"; 

    $test3 = Thread_category::find_all_by_category('Congenital lung disease'); 
    print_r($test3); 
    echo "<br/>"; 
    echo "<br/>"; 

    $test4 = Thread_category::find_all_by_category('Idiopathic pulmonary fibrosis'); 
    print_r($test4); 
    echo "<br/>"; 
    echo "<br/>"; 

내가하지만

Array ([0] => Thread_category Object ([id] => 2 [thread_id] => 145 [category] => Allergic diseases) [1] => Thread_category Object ([id] => 10 [thread_id] => 146 [category] => Allergic diseases) [2] => Thread_category Object ([id] => 20 [thread_id] => 147 [category] => Allergic diseases)) 

Array ([0] => Thread_category Object ([id] => 21 [thread_id] => 147 [category] => Asthma) [1] => Thread_category Object ([id] => 24 [thread_id] => 148 [category] => Allergic asthma)) 

Array ([0] => Thread_category Object ([id] => 4 [thread_id] => 145 [category] => Congenital lung disease) [1] => Thread_category Object ([id] => 22 [thread_id] => 147 [category] => Congenital lung disease) [2] => Thread_category Object ([id] => 25 [thread_id] => 148 [category] => Congenital lung disease)) 

Array ([0] => Thread_category Object ([id] => 5 [thread_id] => 145 [category] => Idiopathic pulmonary fibrosis) [1] => Thread_category Object ([id] => 11 [thread_id] => 146 [category] => Idiopathic pulmonary fibrosis)) 

을받을 수 있나요 경우 :

나는 출력 배열 $category_array_for_this_thread있다!

내가 만약 내가이 얻을이

 foreach($category_array_for_this_thread as $category){ 
        echo $category . "<br/>"; 
     $test_array = Thread_category::find_all_by_category($category); 
     print_r($test_array); 
     } 

....

Allergic diseases 
    Array ([0] => Thread_category Object ([id] => 2 [thread_id] => 145 [category] => Allergic diseases) [1] => Thread_category Object ([id] => 10 [thread_id] => 146 [category] => Allergic diseases) [2] => Thread_category Object ([id] => 20 [thread_id] => 147 [category] => Allergic diseases)) 
    Allergic asthma 
    Array () 
    Congenital lung disease 
    Array () 
    Idiopathic pulmonary fibrosis 
    Array () 

내가 볼 수있는 유일한 차이점 두 번째는 foreach 루프에서 것입니다. 내가 3 개 빈 배열

다음

방법입니다 ....

 public static function find_all_by_category($category) { 
    return self::find_by_sql("SELECT * FROM thread_category WHERE category='{$category}'"); 

} foeach 루프에서

+1

Floris 편집을 해주셔서 감사합니다. – GhostRider

+0

'find_all_by_category' 메소드가 전역 변수'$ category' 또는'$ category_array_for_this_thread'에 접근합니까? – fluminis

+0

$ category를 에코로 만들어서 제작 내용을 확인할 수 있습니까? 어쩌면 코드의 더 많은 컨텍스트를 보여줄 수 있습니까? – johnny

답변

0

을 받고있는 이유 누군가가 나에게 설명 할 수, 당신의 $ 범주는 하나 개의 값과 다른 3가 검색 결과에 아무런 결과도 반환하지 않는 비어 있거나 다른 것이있을 수 있습니다.

+0

그림과 같이 개별 값을 메서드에 전달하면 결과가있는 배열이 출력됩니다. 그러나 foreach 루프에서 출력 될 때. 나는 논리의 그 명백한 어떤 점을 알고있다. 그러나 나는 그것을 볼 수 없다. ...... – GhostRider

+0

오! 친애하는 find_all_by_category는 정확한 단어로 검색했습니다. 너는 그것을 얻 느냐? –

+0

foreach 루프에서 $ category를 출력하면 알레르기 질환 알레르기 천식 선천성 폐 질환 특발성 폐 섬유증 즉 정확한 단어. 이것은 위에서 주어진 예제의 메소드에 전달되는 메소드와 동일합니다 (foreach 루프와는 반대로 개별적으로 수행 될 때). 그래서 응답이 될 수 없습니다. – GhostRider

0

배열의 두 번째 요소의 값은 Allergic이지만, Asthma이 필요합니다. 이게 당신의 find_all_by_category 함수를 끄집어 낼 수 있습니까? 두번째 요소가 비어있는 이유를 설명해줍니다. 그리고 어쩌면 함수는 아무런 일치도 찾지 못한 채로 이상하게 작동할까요?

+0

고정 .... Floris 비록 문제가 아니지만 ... – GhostRider

+0

방금 ​​루프 $ 카테고리의 메아리에서 전달되는 것을 보여주기 위해 추가했습니다. 지금까지 내가 $ 카테고리를 볼 수있는 두 가지 예 사이에 동일합니다 ...... 아! – GhostRider

관련 문제