Массивы становятся нулевыми после перехода к функции в PHP - PullRequest
1 голос
/ 09 апреля 2010

Поэтому, когда я передаю свои заполненные массивы в функцию 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;
                    }

Ответы [ 3 ]

7 голосов
/ 09 апреля 2010

Вы хотите $avatar_image_name[$i], а не $avatar_image_name[i]. Вам нужно $ впереди. В противном случае PHP предполагает, что вы имели в виду "i", а $avatar_image_name["i"] не существует, поэтому он заменяет его на null. Вы должны включить display_errors в своем файле конфигурации php.ini - PHP предупредит вас об этом, если вы это сделаете.

3 голосов
/ 09 апреля 2010

это $ я, а не я:)

for($i = 0; $i < $max_avatars; $i++){
                    $string = ($string . '<option value="'.$avatar_image_name[$i].'">'.$avatar_name[$i].'</option>');
            }
2 голосов
/ 09 апреля 2010

Ваш счетчик цикла for называется $i, но вы используете i для индексации массива внутри цикла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...