Генерация случайной строки php? - PullRequest
0 голосов
/ 29 января 2012

Я пытаюсь сгенерировать случайный бит HTML через php, я не могу заставить его работать?

$i = 96;
$minder = '';
while($i >= 0) {
    // 1
    if (rand(0, 1) == 0) {
        $minder . '<li class="0 1" title="1"></li>';
    // 2
    } else {
        $minder . '<li class="0 2" title="2"></li>';
    }
    --$i;
}
echo $minder;

Как мне получить li для добавления в строку minder?Я должен закончить со списком 96 li?

Ответы [ 4 ]

4 голосов
/ 29 января 2012

Синтаксис должен быть:

$minder .= '<li class="0 2" title="2"></li>';

Обратите внимание на .=

Объединение двух строк выполняется с помощью . (т. Е. $string = "first part"." second part";), но если вы хотите объединить строку с существующей переменной, вы можете сделать это длинным путем:

$existing_string = $existing_string." some more text";

или используйте сокращенный синтаксис, который очень прост:

$existing_string .=" some more text";

Также ... имена ваших классов! Использование числовой цифры в качестве имени класса даст вам головную боль в будущем. Технически вы можете сделать это, но это требует бдительности, и вы можете просто захотеть избежать этого, вызвав свой класс 'class_1' и 'class_2' и т. Д. От w3c :

В CSS1 имя класса может начинаться с цифры (".55ft"), если оно было измерение (".55in"). В CSS2 такие классы анализируются как неизвестные размеры (чтобы учесть будущие добавления новых блоков). Делать «.55ft» допустимый класс, CSS2 требует экранирования первой цифры (". \ 35 5 футов")

Учитывая, как легко этого избежать, я бы следовал правилу Триптиха на этом:

Имя [должно начинаться] с подчеркивания (_), тире (-) или буква (a – z), за которой следует любое количество тире, подчеркиваний, букв, или цифры. Есть загвоздка: если первый символ - тире, второй символ должен2 быть буквой или подчеркиванием, а имя должно быть длиной не менее 2 символов.

1 голос
/ 29 января 2012

Используйте оператор добавления / назначения .=

$minder .= '<li class="0 1" title="1"></li>';

Кроме того, более эффективный способ сделать то, что вам нужно:

while($i >= 0) {
        $rand = mt_rand(1,2);
        $minder . '<li class="0 $rand" title="2"></li>';
    }
    --$i;
}
0 голосов
/ 29 января 2012

Вы никому не назначаете $ minder.Оператор конкатенации "."не выполняет назначения.

Попробуйте вместо этого

$minder .= '<li class="0 2" title="2"></li>';
0 голосов
/ 29 января 2012

Я думаю, вы имели в виду $minder .=, а не $minder ..

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