Цикл Foreach не выводит массивы, как ожидалось

У меня есть объект, называемый Thread_category . У этого метода есть метод find_all_by_category($category) который выводит массив потоков, имеющих категорию, $category .

У меня есть массив $category_array_for_this_thread который выводит:

 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 ) ) 

НО!

если я это сделаю

  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 ваша категория $ имеет только одно значение, а остальные 3 могут быть пустыми или иметь что-либо другое, которое не возвращает результат при поиске.

Второй элемент вашего массива имеет значение Allergic но вам нужно, чтобы у него была Asthma . Может быть, это find_all_by_category функцию find_all_by_category – это объясняет, почему второй элемент пуст, и, может быть, функция делает что-то странное после того, как оно не найдено?