【问题标题】:Arrays become null after passing to function in PHP数组在传递给 PHP 中的函数后变为空
【发布时间】:2010-04-09 18:00:42
【问题描述】:

因此,当我将填充的数组传递给函数 createform 时,表单是使用 $max_avatars 选项创建的,但它们没有名称或值。为什么我的数组变为空?

<?php
    $avatar_image_name = array('hacker','samurai','cool','happy','thatsnice','angry','tv','bang');
    $avatar_name = array('Hacker','Samurai','Cool','Happy','That\'s nice','Angry','TV','Bang');

    $max_avatars = 6;
     createform($max_avatars, $avatar_image_name, $avatar_name); 
?>

函数createform:

function createform($max_avatars, $avatar_image_name, $avatar_name)
                    {
                        $string ='<table id="formtable">
                            <tr><td class="formtext">Name:</td><td><input type="text" name=name size=25 /></td></tr>            
                            <tr><td class="formtext">Trip:</td><td><input type="text" name=trip size=25 /> (<font style="color: #ff0000">Don\'t use your password</font>)</td></tr>
                            <tr><td class="formtext">Comment</td><td><textarea name=post rows="4" cols="50"></textarea></td></tr>
                            <tr><td class="formtext">Avatar:</td>
                            <td>
                            <select name=avatar>';

                        for($i = 0; $i < $max_avatars; $i++){
                            $string = ($string . '<option value="'.$avatar_image_name[i].'">'.$avatar_name[i].'</option>');
                        }

                        $string = ($string . '</select>
                            </td>
                            <tr><td class="formtext">Extra</td><td>Fortune: <input type="radio" name="extra" value="fortune" /> Poker: <input type="radio" name="extra" value="poker" /></td></tr>
                        </table>
                        <input type=submit value="Submit" id="submitbutton">');

                        echo $string;
                    }

【问题讨论】:

    标签: php arrays function


    【解决方案1】:

    你想要$avatar_image_name[$i],而不是$avatar_image_name[i]。您需要前面的$。否则,PHP 假定您的意思是 "i",而 $avatar_image_name["i"] 不存在,因此将其替换为 null。你应该在你的 php.ini 配置文件中打开display_errors——如果你这样做了,PHP 会警告你这些东西。

    【讨论】:

      【解决方案2】:

      是 $i,不是 i :)

      for($i = 0; $i < $max_avatars; $i++){
                          $string = ($string . '<option value="'.$avatar_image_name[$i].'">'.$avatar_name[$i].'</option>');
                  }
      

      【讨论】:

      • 非常感谢。只要 SO 允许,我就会接受这个作为我的答案。
      【解决方案3】:

      您的 for 循环计数器称为 $i,但您使用 i 来索引循环内的数组。

      【讨论】:

        猜你喜欢
        • 2018-02-01
        • 1970-01-01
        • 2014-05-06
        • 1970-01-01
        • 2023-04-06
        • 2020-04-27
        • 1970-01-01
        • 2013-07-05
        • 2012-07-19
        相关资源
        最近更新 更多