好的,所以我之前发布了这个问题,但仍然没有答案。我很感激这些尝试。
Foreach loop not outputting arrays as expected
我试图缩小范围。我需要知道使用explode从字符串创建的数组是否与$ foo = array(.....)指定的数组有某种不同。拿这个代码
$category_array = array('Pulmonary sarcoidosis', 'Acute critical care', 'Congenital lung disease');
foreach($category_array as $category){
$result = Thread_category::find_all_by_category($category);
foreach ($result as $result_array){
echo $result_array->thread_id;
echo "<br/>";
}
}
?>
收率:
145 146 149 151
144 148 150 151
145 147 148 149 151
哪个是对的。但是一个数组创建如下......
$category_array = explode(",", $thread->category);
什么时候输出
阵列([0] =&gt;肺结节病[1] =&gt;急性重症监护[2] =&gt;先天性肺病)
但是当经历foreach循环时......
145 146 149 151
它在第一次循环后停止......
不知道为什么并且已经花了几个小时输出所有内容.....
我知道这里有代码我还没有解释但我认为问题必须在爆炸级别发生....请帮助!
答案 0 :(得分:1)
请运行此并告诉我们回声计数的内容。
$category_array = explode(",","Pulmonary sarcoidosis,Acute critical care,Congenital lung disease");
echo "category_array has ".count($category_array);
foreach($category_array as $category){
$result = Thread_category::find_all_by_category($category);
echo "result variable has ".count($result);
foreach ($result as $result_array){
echo $result_array->thread_id;
echo "<br/>";
}
}
?>
答案 1 :(得分:0)
你能否确认要求
Thread_category::find_all_by_category($category);
其中$ category是不存在的类别,不会导致服务器错误?
如果是这样,我猜您在$ thread-&gt;类别中的数据比预期的要多!
答案 2 :(得分:0)
这是解决方案......
数组中每个值前面的空格是个问题。因此解决方案是
$category_array = explode(",", $thread->category);
$category_array=array_map('trim',$category_array);
foreach($category_array as $category){
$result = Thread_category::find_all_by_category($category);
foreach ($result as $result_array){
echo $result_array->thread_id;
echo "<br/>";
}
echo "<hr/>";
}