Foreach Loop在爆炸变量后不会循环..需要帮助

时间:2011-08-13 11:01:01

标签: php arrays loops foreach

我在数据库中显示一行时遇到问题,该数据库有一个技能列表作为数组,用逗号分隔。带有解释的完全注释的代码是我迄今为止所做的。非常感谢所有帮助。提前谢谢。

// DB Connection here

    // Execute Query 
    $sql        =   "SELECT id, skills FROM p_info";
    $result     =   mysql_query($sql);
    $row        =   mysql_fetch_array($result);

    // Delimit array by comma
    $myArray = explode(',', $row['skills']);

    // Store as array
    $myArr   = array($myArray);

    /** 
    Assume the value of is skills row in the database is: type 1, type 2,  type 3, type 4 
    i would like to show these values each on a seperate <li> element hence using a loop. 

    <li> type 1</li>
    <li> type 2</li>
    <li> type 3</li>
    <li> type 4</li>

    My guess would be to use foreach loop..but im a little confused how to  go about this. Here whats i think logically:

    **/
    ?>
        <ul>
        <?
            foreach ( $myArr as $skills ) { 
        ?>
            <li><?=$myArr;?></li>

        <? 
            } // End loop 
        ?>
        </ul>

    <!-- Can someone tell me what im doing wrong? im fairly new to PHP but im a quick learner. :) -->

4 个答案:

答案 0 :(得分:0)

删除$myArr = array($myArray);并改为foreach ( $myArray as $skills ) {。 您将数组放在一个新数组中,因此当您尝试遍历它时,最终会得到原始数组。

同时将<?=$myArr;?>更改为<?=$skills;?>,您正在循环$myArray并临时存储$skills中的每个部分,$myArray不会改变,因此它无用试图echo

答案 1 :(得分:0)

explode已经返回一个数组。将结果包装成数组会给你这样的结果:

array(array('foo', 'bar', 'baz'))

当循环遍历外部数组时,您当然不会得到内部数组的结果。只需摆脱$myArr = array($myArray)并使用$myArray

答案 2 :(得分:0)

  • 不需要“存储为数组”行。 $myArray已经是一个数组。
  • <li><?php echo $skills; ?>而不是$myArr。那是阵列。
  • 请勿使用短开标签(<?)使用<?php代替

答案 3 :(得分:0)

无需执行$myArr = array($myArray);,因为explode()已经返回数组。

您可以随时在阵列或任何其他变量上执行var_dump($myArray)以查看其中的内容。