применять разные стили к разным строкам текста в PHP

Возможный дубликат:
Как чтобы получить случайное значение из массива

У меня есть код, применяющий случайный шрифт к блоку текста, который берется из последних 20 строк файла .txt. Я хотел бы применить другой случайный шрифт к каждой строке... какие-нибудь указатели?

<?php 

$fonts = array("Helvetica", "Arial", "Courier", "Georgia", "Serif", "Comic Sans", "Tahoma");
shuffle($fonts);
$randomFont = array_shift($fonts);

$output = "";
$lines = array_slice(file("users.txt"), -20, 20);

foreach ( $lines as $line )

{
$output .= '<div style="font-family:' . $randomFont . '; margin-left: ' . rand(0, 60) . '%; opacity: 0.8;">' . $line . '</div>';
}

echo $output;
?> 

person John    schedule 15.05.2011    source источник


Ответы (3)


Живая демонстрация здесь.

Код:

$fonts = array("Helvetica", "Arial", "Courier", "Georgia", "Serif", "Comic Sans", "Tahoma");
shuffle($fonts);

$output = "";

$lines = array();
for($i = 0; $i < 40; $i++) $lines[] = "line $i";

$i = 0;
foreach ( $lines as $line ) {
  if($i == count($fonts)) {
    shuffle($fonts);
    $i = 0;
  }
  $output .= '<div style="font-family:' . $fonts[$i] . '; margin-left: ' . rand(0, 60) . '%; opacity: 0.8;">' . $line . "</div>\n";
  $i++;
}

echo $output;
person Majid Fouladpour    schedule 15.05.2011

Рандомизируйте свои шрифты:

$Random = $fonts[rand(0, count($fonts) - 1)];
person tradyblix    schedule 15.05.2011

Думал об этом и нашел более простое решение.

<?php
$fonts = array ('font 1', 'font 2', 'font 3'); // 20 entries for the full set

shuffle ($fonts);

while ($font = array_pop ($fonts))
{
    $output .= '<div style="font-family:' . $font . ';"></div>';
}
?>

Это, очевидно, не точное решение проблемы, которую вы написали выше, и не предназначено для этого. Он предназначен для предоставления примера подхода для получения случайных значений, которые гарантированно будут уникальными. Вы должны быть в состоянии включить идею, выраженную здесь, в свой собственный код без особых трудностей.

person GordonM    schedule 15.05.2011