来自foreach循环的无法解释的输出

时间:2014-04-18 15:09:08

标签: php arrays foreach

好的,所以我之前发布了这个问题,但仍然没有答案。我很感激这些尝试。

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

它在第一次循环后停止......

不知道为什么并且已经花了几个小时输出所有内容.....

我知道这里有代码我还没有解释但我认为问题必须在爆炸级别发生....请帮助!

3 个答案:

答案 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/>";
    }