<?php
//array
$lessFifty = array();
$moreFifty = array();
//number generation
for ($i = 1; i<=30; $i++) {
$number = rand(0, 100);
//Sorting <50>
if ($number < 50 ) {
$lessFifty[] = $number;
} else {
$moreFifty[] = $number;
}
}
print_r($lessFifty);
print_r($moreFifty);
//Average
echo "<p> average of values less than fifty: </p>";
array_sum($lessFifty) / count($lessFifty) ;
echo "<p> average of values greater than fifty: </p>" ;
array_sum($moreFifty) / count($moreFifty) ;
?>
Это то, что я до сих пор. Я пытаюсь сгенерировать 50 случайных чисел в диапазоне 0-100. Затем я должен отсортировать его на 50 или менее.
Я также должен рассчитать среднее, диапазон и медиану.
Когда я пытаюсь сделать до среднего и положить его в свой браузер (с включенным сервером), я получаю пустую страницу. Нет ошибок, просто пусто. Я также использовал PHP Sandbox, чтобы протестировать его и не получить никаких синтаксических ошибок, просто пустое окно результатов.
Как я могу это исправить, чтобы расчеты действительно происходили и показывались на странице?
У вас есть проблема здесь:
for ($i = 1; i<=30; $i++) {
// ----------^
Это должно было быть $i
,
Теперь о реальной проблеме. Похоже, вы отключили error_reporting
и / или display_errors
на вашем сервере. Это нормально на рабочем сервере, но должно быть включено на вашем сервере разработки / локального / тестирования. Посетить php tag wiki page и искать «не работает» и следуйте инструкциям там.
Ваш скрипт вызывает бесконечный цикл, и без каких-либо сообщений об ошибках вы не увидите, что вашему скрипту не хватает памяти.
Вы можете это исправить, исправив for
-loop. Вы забыли положить $
до второго i
:
for ($i = 1; i<=30; $i++) {
// ^^^
// it should be
for ($i = 1; $i<=30; $i++) {
Чтобы включить отчеты об ошибках, чтобы увидеть ошибки (например, нехватка памяти) в будущем, вы можете проверить Как получить полезные сообщения об ошибках в PHP?
для дополнительной информации.
Однако ваш сценарий по-прежнему не будет печатать средние значения, которые вы рассчитали, для этого вы должны добавить echo
перед обоими расчетами или вы можете использовать конкатенация объединить строки и использовать только 2 echo
s.
2 исправления $ отсутствуют i<=30
; и вывод результатов эха
<?php
//array
$lessFifty = array();
$moreFifty = array();
//number generation
for ($i = 1; $i<=30; $i++) {
$number = rand(0, 100);
//Sorting <50>
if ($number < 50 ) {
$lessFifty[] = $number;
} else {
$moreFifty[] = $number;
}
}
print_r($lessFifty);
print_r($moreFifty);
//Average
echo "<p> average of values less than fifty: </p>";
echo array_sum($lessFifty) / count($lessFifty) ;
echo "<p> average of values greater than fifty: </p>" ;
echo array_sum($moreFifty) / count($moreFifty) ;
Альтернативный код дисплея:
echo "<p> average of values less than fifty: ".array_sum($lessFifty) / count($lessFifty)."</p>" ;
echo "<p> average of values greater than fifty: ".array_sum($moreFifty) / count($moreFifty)."</p>"