У меня вопрос. Я создал небольшой скрипт, который генерирует 37 случайных чисел от 0 до 36, но я хочу немного его расширить.
Вот что у меня есть:
<!DOCTYPE html>
<html>
<body>
<?php
for ($x = 1; $x <= 37; $x++) {
echo(mt_rand(0,36) . "<br>");
}
?>
</body>
</html>
Я хочу показать горизонтальную строку от 0 до 36 и ниже, которую я хочу показать, сколько раз число показывает из предыдущего кода генератора случайных чисел.
Может ли кто-нибудь помочь мне здесь?
Попробуй это:
<!DOCTYPE html>
<html>
<body>
<?php
$numberOfSpins = 10000;
$numberArray = array();
// Start table
echo '<table>
<tr>';
// print out the table headers
for ($x = 0; $x < 37; $x++) echo '<th style="font-weight:bold; color:#09f;">'.$x.'</th>';
// Fill $numberArray with random numbers
for($i=0; $i < $numberOfSpins; $i++) array_push($numberArray, mt_rand(0,36));
echo '</tr>
<tr>';
// Count value frequency using PHP function array_count_value()
$resultArray = array_count_values($numberArray);
// Start from 0 since you are generating numbers from 0 to 36
for($i=0; $i < 37; $i++)
{
// array_count_values() returns an associative array (the key of
// each array item is the value it was counting and the value is the
// occurrence count; [key]->value).
if (isset($resultArray[$i])) echo '<td>'.$resultArray[$i].'</td>';
else echo '<td>0</td>';
}
echo '</tr>
</table>';
?>
</body>
</html>
Вы можете создать массив и сохранить результат на нем.
Код
Ты можешь использовать array_count_values
$random_numbers = array();
echo 'Random Numbers: ';
for ($x = 1; $x <= 37; $x++) {
$random_numbers[] = mt_rand(0,36);
}
print_r(array_count_values($random_numbers));
ВЫХОД
Array
(
[21] => 1
[22] => 1
[15] => 1
[6] => 2
[13] => 2
[24] => 2
[35] => 3
[0] => 1
[3] => 2
[32] => 1
[19] => 2
[9] => 2
[28] => 2
[29] => 1
[33] => 1
[11] => 1
[2] => 3
[25] => 1
[10] => 2
[4] => 1
[30] => 1
[20] => 1
[27] => 1
[26] => 1
[12] => 1
)
Вы можете использовать переменную для хранения значений, а затем использовать array_keys отобразить номер столбца и arrays_values распечатать значения. Последнее не является обязательным.
<?php
$numbers = [];
for($x = 1; $x <= 10; $x++) {
$numbers[$x] = mt_rand(0,36);
}
echo implode("\t | \t", array_keys($numbers));
echo PHP_EOL;
echo implode("\t | \t", $numbers);