У меня есть объект, называемый 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
– это объясняет, почему второй элемент пуст, и, может быть, функция делает что-то странное после того, как оно не найдено?