Этот урок набрал набрал достаточно большое количество комментариев и дальнейшее его комментирование отключено. Если вы хотели убедиться в правильности выполнения ДЗ или у вас возник вопрос по уроку, посмотрите ранее добавленные комментарии, кликнув по кнопке ниже. Скорее всего вы найдете там то, что искали. Если это не помогло - задайте вопрос в чате в телеграме - https://t.me/php_zone
SBTesla 01.10.2017 в 10:28
<?php

$num = 344;
while ($num <= 357) {
    if ($num % 2 == 0) {
        $arr[] = $num;
    }
    $num++;
}

foreach ($arr as $key => $value) {
    echo $value;
    echo "<br>";
}
<?php
/*Выводим все сотые  числа*/
$num = 0;
while ($num < 1000) {
    if ($num) {
        $arr[] = $num;
    }
    $num+= 100;
}

foreach ($arr as $key => $value) {
    echo $value;
    echo "<br>";
}
ivashkevich 01.10.2017 в 11:00
  1. Если входные условия поменяются, и нужно будет найти все чётные числа от 344, то число 344 будет пропущено, а проверяться сразу будет 345. Аналогично с верхней границей, если было бы 358, то оно тоже было бы пропущено. Переделайте алгоритм так, чтобы граничные значения тоже учитывались.
  2. Так неправильно:
    if ($i % 2) { } 
    else { $arr[] = $i;}

    Правильно вот так:

    if ($i % 2 === 0) {
        $arr[] = $i;
    }

    Во-первых, ни в коем случае не должно быть пустых блоков. Можно инвертировать условия с помощью логического НЕ (оператор !). То есть не писать:

    if ($x) {
        //это мне ни к чему
    } else {
        //а вот здесь я что-то сделаю
    }

    А писать:

    if (!$x) {
        //здесь я что-то сделаю
    }

    Здесь вы посмотрели, что если $i делится на 2 с остатком (остаток - 1, будет преобразовано в true), то это не то что вам нужно. И добавили else и его уже обработали.
    Хотя можно было сделать просто подходящее условие - если остаток от деления на 2 равен 0.

  3. Блоки if всегда нужно писать в виде:
    if (условие) {
        //то
    }

    Никаких в одну строку и прочих лишних переносов.

  4. Один отступ всегда должен быть равен четырем пробелам. А у вас echo пляшут как хотят. Используйте автоформатирование в PHPStorm - одновременное нажатие CTRL+ALT+L

Поправьте эти небольшие недочёты и попробуйте снова.

alex.evg.ostr 22.02.2019 в 12:43

В 1. Нет, 344 также попадет под условия и будет внесено в массив. Также, если у величить сравнение с 358, то значение 358 тоже будет внесено и выведено.

trialex3 02.10.2017 в 21:20
<?php
$arr = [];
$x = 345;
while ($x <= 357) {
    if ($x % 2 == 0) {
        $arr[] = $x;
    }
    $x++;
}

foreach ($arr as $value) {
    echo $value . ', ';
}
?>
ivashkevich 03.10.2017 в 18:13

Всё верно, образцовая работа.

Watcher 08.10.2017 в 15:24

$arr = [];
можно опустить
тоже работает )))

ivashkevich 10.10.2017 в 19:05

Можно, но лучше писать, так более очевидно.

WarLikeLaux 10.11.2017 в 17:44

https://pp.userapi.com/c824504/v824504838/1c106/WB8KDf9xzn0.jpg

ivashkevich 10.11.2017 в 17:49

Всё хорошо, но код лучше оформлять текстом, как я вам и говорил. С помощью markdown-разметки:
```
код
```

Закрывающий тег ?> в конце не нужен.

serb2017 15.11.2017 в 12:24
<?php

$i = 346;
$i1 = 357;

if ($i % 2 !== 0) {$i=$i+1;}

while ($i <= $i1) {
    $array1 [] = $i;
    $i = $i + 2;
    }

foreach ($array1 as $i) {
    echo $i;
    echo '<br>';
};
ivashkevich 18.11.2017 в 13:49

У вас всё хорошо и с логикой и с алгоритмами. Есть только небольшая проблема со стилем кода и названиями переменных. То что находится внутри фигурных скобок нужно выносить на отдельные строки. Вот так:

if (условие) {
    действие
}

Переменную $i лучше назвать $from. $i1 лучше назвать $to.
При добавлении новых элементов в массив в конструкции между именем массива и квадратными скобками не должно быть пробелов. Вот так:

$arr[] = 123;

Позже напишу отдельную статью по этой теме. И еще раз - с задачей вы справились на все 100%. Кодстайл - это уже профессиональный уровень, но будет хорошо если вы уже сейчас начнете писать следуя этим правилам. Это даст вам преимущество.

serb2017 18.11.2017 в 15:18

Благодарю Вас за совет. Действительно, нужно быть внимательным к "мелочам", особенно в жизни !

1nSide 07.04.2018 в 15:37

Не получилось в одной строке ваил условия написать для вывода(

$i = 345;
$array = [];

while ($i <= 357)
{
    if($i%2==0){
        $array[] = $i;
    }
    $i++;
}

foreach ($array as $value)
{
    echo $value . '  ';
}
ivashkevich 07.04.2018 в 17:58

А их и не надо в одну строку писать, тут всё правильно и понятно :)

1nSide 07.04.2018 в 16:09

Ну или так, так вроде еще никто не делал)

$i = 345;
$array = [];

while ($i <= 357)
{
        $array[] = $i;
        $i++;
}

foreach ($array as $value)
{
    if($value%2==0)
    {
        echo $value . '  ';
    }
}
ivashkevich 07.04.2018 в 17:52

Не соответствует заданию, так как массив должен содержать только чётные числа

1nSide 07.04.2018 в 16:18

Еще так можно

$i = 345;
$array = [];

do
{
    if($i%2==0)
    {
    $array[] = $i;
    $i++;
    }
} while ($i <= 357);

foreach ($array as $value)
{
        echo $value . '  ';
}
ivashkevich 07.04.2018 в 17:59

А здесь у вас бесконечный цикл, вы хоть проверяйте, что оно работает.

1nSide 08.04.2018 в 09:53

Теперь работает))

$i = 345;
$array = [];

do
{
    if($i%2==0)
    {
    $array[] = $i;
    }
    $i++;
} while ($i <= 357);

foreach ($array as $value)
{
        echo $value . '  ';
}
ivashkevich 08.04.2018 в 17:46

Другое дело! :)

SlipKnot 06.07.2018 в 11:51
<?php

$x = 345;
while ($x < 357) {
    if ($x % 2 == 0) {
        $array[] = $x;
        }
     $x ++;
}

foreach ($array as $key)
{
    echo $key . "<br>";
}
ivashkevich 06.07.2018 в 18:22

Тут всё гуд) Потенциально может возникнуть ошибка, если вместо 357 мы захотим установить границу 358. Более надежным и универсальным условием будет меньше либо равно:

while ($x <= 357) {
SlipKnot 09.07.2018 в 04:46
<?php
$x = 345;
while ($x <= 357) {
    if ($x % 2 == 0) {
        $array [] = $x;
    }
    $x ++;
}
foreach ($array as $item) {
    echo $item . '<br>';
}
ivashkevich 09.07.2018 в 15:58

Отлично =)

Fox-24 13.08.2018 в 15:32

Спасибо за урок!

<?php

$startnum = 345; 
$endnum = 357;
$array = [];

while ($endnum != $startnum) {
    $res = $endnum % 2;
    --$endnum;

    if ($res != 0) {
        $array[] = $endnum;
    }
}

foreach ($array as $value) {
    echo $value . '</br>';
}
ivashkevich 13.08.2018 в 15:38

ААА, ты куда так разогнался, я не успеваю проверять=)

Хорошо, но можно чуть упростить:

while ($endnum != $startnum) {
    if ($endnum % 2 !== 0) {
        $array[] = $endnum;
    }
    $endnum--;
}

То есть не зачем создавать переменную $res - можно сразу проверять.

Fox-24 13.08.2018 в 15:42

Да, прет меня от уроков с этого сайта xD

ААА, ты куда так разогнался, я не успеваю проверять=)

Согласен, был такой вариант, пробовал, но что-то пошло не так, видимо была синтаксическая ошибка. Спасибо:)

artemjeka 06.09.2018 в 17:38

1.

$a = 345;
$arr = [];
while ($a <= 357) {
    if ($a % 2 == 0) {
        $arr[] = $a;
    }
    $a++;
}
foreach ($arr as $val) {
    echo $val . '<br />';
}
ivashkevich 07.09.2018 в 08:52

Отлично!

virtual2018 20.11.2018 в 17:10
<?php
$currentNumber = 345;
$array = [];
while ($currentNumber <= 357) {
    if (!($currentNumber % 2)) {
        $array[] = $currentNumber++;
    }
    $currentNumber++;
}
foreach ($array as $index)
    echo '<br>' . $index;
ivashkevich 20.11.2018 в 23:48
if (!($currentNumber % 2)) {

тут не сразу понятно что ожидается, лучше сравнивать с нулём - так будет более явно.

Для тела цикла и условий всегда используйте фигурные скобки, даже если там одна строка. В PHP это стандарт.

Mike 27.11.2018 в 18:00

Спасибо за урок, весьма понятно и доходчиво, отличный проект!

<?php
$x=0;
$massiv = [];
while ($x < 359){
    $x++;
    if ($x > 350 && $x % 2 == 0) {
         $massiv[]=$x;
    }
}

foreach ($massiv as $num) {
    echo $num . '<br>';
}
ivashkevich 28.11.2018 в 22:32

Можно начинать не с нуля, а с 345. И непонятно, почему здесь 350, а не 345.

XXX 07.01.2019 в 15:51
<?php

$i=345;
$mas=[];
while($i<=357){
    if($i%2==0){
        $mas[]=$i;
        $i++;
    }
    else $i++;
}

foreach($mas as $value){
    echo $value.'<br>';
}
ivashkevich 07.01.2019 в 15:59

$i++ не зависит от условия, можно просто в конце каждой итерации делать.

Для блоков if и else всегда используйте фигурные скобки, даже если там одна строка.

XXX 07.01.2019 в 15:52

После изменение значения max_execution_time с 180 на 1 сервер так же продолжает выполнение кода с бесконечных единичек, а не завершает работу скрипта через 1 секунду. В чем проблема? Или я не так что-то понял?

ivashkevich 07.01.2019 в 16:00

Попробуйте добавить в цикле паузы в 100 мс и посмотрите на разницу.

Invisible 13.01.2019 в 17:27

У меня аналогичная ситуация. Как добавить паузы в цикле? В уроке об этом ничего не сказано.

ivashkevich 13.01.2019 в 18:46

А погуглить? Просто как сделать паузу в PHP.

UtillitE 28.06.2020 в 18:15

Паузу можно сделать командой sleep (sec). :))))

ivashkevich 29.06.2020 в 11:16

Или usleep, что в данном случае больше подойдёт

SashkoUkraine 21.01.2019 в 11:55
<?php

$startNumber = 345;
$endNumber = 357;
$oddNumber = [];

while($startNumber <= $endNumber) {
    if($startNumber % 2 === 0) {
        $oddNumber[] = $startNumber;
    }
    $startNumber += 1;
}

foreach ($oddNumber as $number) {
    echo "--" . $number . "<br>";
}
ivashkevich 21.01.2019 в 21:16

Ок.

Вместо

$startNumber += 1;

лучше использовать

$startNumber++;
Bugaga159 24.01.2019 в 23:17
$x = 345;
$y = 357;
$arrs = function(int $start, int $stop){
    $arrResult = [];
    while ($start <= $stop) {
        if($start%2 == 0) {
            $arrResult[] = $start;
        }
        $start++;
    }
    return $arrResult;
};
foreach ($arrs($x, $y) as $key => $arr) {
    echo $key+1 . ' - ' . $arr . '<br>';
}
ivashkevich 25.01.2019 в 10:09

Хорошо понимаете синтаксис языка - это похвально. Но в целом решение выглядит переусложненным, можно же просто выводить числа при выполнении условия.

Pro100Bah 25.01.2019 в 13:38
echo 'Homework15' . '<br>';
$array = [];
$a = 345;
while ($a <= 357) {
    if ($a % 2 == 0) {
        $array[] = $a;
    }
    $a++;
}
var_dump($array);
foreach ($array as $index => $value) {
    echo $index . ' ' . $value . '<br>';
}

Понравилось домашнее задание. Но сначала раза 2 проверил себя по уроку. С директивой max_execution_time почитал, но если я ставлю ее 1 мс у меня вообще не открывается страничка, а так по умолчанию стояло 180.

ivashkevich 25.01.2019 в 21:36

По дз - ок. За одну миллисекунду не успеет ничего выполниться.

Pro100Bah 26.01.2019 в 07:30

Понятно, принцип работы директивы ясен.

[email protected] 25.01.2019 в 18:42
        $numb = 345;
        $array = [];

        while ($numb++ < 357){
            if ($numb % 2 == 0){
                $array[] = $numb;

            }
        }

        var_dump($array);

        foreach ($array as $item){
            echo $item . '  ';
        }
ivashkevich 25.01.2019 в 21:37

Отлично

[email protected] 02.02.2019 в 15:50
<?php
$array = [];
$i = 357;
while ($i >= 345){
    if ($i%2 == 0) {
        $array[] = $i;
    }
    $i--;
}

foreach ($array as $index => $value) {
    echo $array[$index] . '<br>';
}
?>
ivashkevich 03.02.2019 в 23:56

Ок!

[email protected] 26.02.2019 в 21:02
<?php

$i = 344;

while ($i <= 354) {

    $i = $i + 2;

    $array[] = $i;
}

foreach ($array as $index => $i) {
echo $index . ' ' . $i . '<br>';
}
echo 'The end';

?>
ivashkevich 02.03.2019 в 16:40

А где проверка на чётность? Числа в условии могут поменяться.

ashfedor 07.03.2019 в 14:19

Немного добавил от себя чтоб массив нагляднее был

$i = 345;
while ($i < 357) {
    if ($i % 2 == 0) {
        $for[] = $i;
    }
    $i++;
}
foreach ($for as $key => $value) {
    echo $key . ' => ' . $value . '<br>';
}
ivashkevich 09.03.2019 в 19:25

$for - плохое название для массива. Лучше хотя бы $array. Перед циклом стоит его проинициализировать как пустой массив:

$array = [];
while ...
[email protected] 10.03.2019 в 12:09
<?php
$arr = [];
$i = 345;
while ($i <= 357) {
    if ($i % 2 === 0) {
        $arr[] = $i;

    }
    $i++;
}

foreach ($arr as $value) {
    echo $value . '<br>';
}

Цикл в while(true) вызывает бесконечный цикл. max_execution_time равный 1 позволяет прервать скрипт, если он не выполнился в течении 1 секунды.

ivashkevich 11.03.2019 в 21:06

Отлично!

Shtiher 10.03.2019 в 21:38
<?php

$a = 345;
$b = 357;
$arrEven = [];

while ($a <= $b) {
    if ($a % 2 < 1) {
        $arrEven[] = $a;
    }
    $a++;
}
foreach ($arrEven as $numEven) {
    echo $numEven . '<br>';
}
ivashkevich 11.03.2019 в 21:07

Хорошо. Но вместо

$a % 2 < 1

лучше все же

$a % 2 === 0
Grewi 14.03.2019 в 14:28
$min = 345;
$max = 358;
$evenNumber = [];
echo 'Все четные числа от <b>' . $min . '</b> => ';
while ($min <= $max) {
    if ($min % 2 === 0) {
        $evenNumber [] = $min;
    }
    $min++;
}
foreach ($evenNumber as $eventForeach) {
    echo $eventForeach . ' ';
}
echo ' <= до <b>' . $max . '</b> включительно.';
ivashkevich 17.03.2019 в 23:03

Отлично

lilit 16.03.2019 в 00:34

Первое:

<?php
$array = [];
$i = 345;

while ($i <= 357) {
    if ($i % 2 == 0) {
        $array[] = $i;
    }
    $i++;
};

foreach ($array as $evenNumber) {
    echo $evenNumber . '<br>';
}

Второе: Привел этот код к тому, что 1 выводится бесконечно. Цикл выполняется всегда, т.к. в его условии всегда остается истина.
Далее я изучила max_execution_time и если правильно поняла, то это время выполнения скрипта.
При изменении на 1 секунду выдает ошибку через секунду (Fatal error: Maximum execution time of 1 second exceeded).
Эээ.. выполнение скрипта затрачивает больше времении поэтому останавливается аварийно?

ivashkevich 17.03.2019 в 23:03

Отлично, всё верно.

Boodoo 01.04.2019 в 00:11
<?php
    $arr = [];
    $i = 345;

    while ($i <= 357) {
        if($i % 2 == 0) {
            $arr[] = $i;
        }
        $i++;
    }

    var_dump($arr);
ivashkevich 01.04.2019 в 22:15

Отлично

[email protected] 10.04.2019 в 15:15
<?php

$numbers = [];
$number = 345;
while ($number <= 357) {
    $numbers[] = $number;
    $number++;
}

foreach ($numbers as $key => $number) {
    echo $key . ' - ' . $number . '<br>';
}
ivashkevich 10.04.2019 в 15:21

Ок

artemship 13.04.2019 в 21:35
<?php
$evenNumbers = [];
$i = 345;
while ($i <= 357) {
    if ($i % 2 == 0) {
        $evenNumbers[] = $i;
    }
    $i++;
}
foreach ($evenNumbers as $number) {
    echo $number . '<br>';
}

Код из домашнего задания приводит к зацикливанию, т.к. условие всегда будет выполняться. Директива max_execution_time задает максимальное время в секундах, в течение которого скрипт должен полностью загрузиться, иначе выдаст ошибку.

ivashkevich 14.04.2019 в 00:23

Отлично

[email protected] 15.04.2019 в 20:31
<?php
$arr = [];
$start = 345;
while ($start < 357) {
    if ($start % 2 == 0) {
        $arr[] = $start;
    }
    $start++;
}

foreach ($arr as $key) {
    echo $key . ', ';
}
ivashkevich 17.04.2019 в 22:08

Отлично

Dram 20.04.2019 в 13:08
<?php
$i = 346;
$arry = [];
while ($i > 345 && $i < 357) {
    $i++;
    if ($i%2==0){
        $arry[] = $i;
    };
}
foreach ($arry as $znachenie ){
    echo $znachenie . '<br>';
}
ivashkevich 20.04.2019 в 13:18

Зачем вы отвечаете к чужим комментариям?

Dram 20.04.2019 в 13:21

Сори, только сейчас заметил что форма отправки верху. А я снизу обыскался. Лента комментов растягивается, было бы логично продублировать форму добавления комментов вниз при n >10

У меня так на моих сайтах :))

P.S. и еще, если сразу код в правильно в теги кода не заключил, то все - при редактировании уже не показывает плашку BB кодов

[email protected] 08.05.2019 в 13:18
$number = 345;

while ($number <= 357) {
    $arr = [];
    if ($number % 2 === 0) {
        $arr[] = $number;
    }
    forEach ($arr as $numbers) {
        echo $numbers.'<br>';
    }
    $number++;
}

не понял нащёт изменения времени выполнения скрипта у меня стояло 180 я изменил на 1 но страница так и осталась грузится,может я что то не понял?

ivashkevich 10.05.2019 в 13:35

По коду:

  • foreach пишется маленькими буквами
  • внутри одного цикла каждый раз выводится массив на текущем шаге. Получается цикл в цикле, хотя нужно вывести готовый массив только один раз

По вопросу: веб-сервер перезапускали после изменения настроек?

Moskva 14.05.2019 в 14:55

Код:

$x = 345;
$n=0;

while($x<357){
    if ($x % 2 == 0){
        $evenArray[$n] = $x ;
        $n++;
    }
    $x++;
}
foreach($evenArray as $even){
    echo $even . '<br>';
}

Код который исполняет бесконечный цикл:

while(true){
    echo 1;
}

Если изменить в конфигурационном файле max_execution_time на 1, то это приведет к ошибке.

ivashkevich 16.05.2019 в 00:13

Перед циклом нужно определить пустой массив $evenArray.
Переменная $n по сути лишняя - можно добавлять элементы в массив без указания индексов.

Moskva 22.06.2019 в 15:45

Вот так?

$x = 345;
$evenArray = [];

while($x<357){
    if ($x % 2 == 0){
        $evenArray[$n] = $x ;
        $n++;
    }
    $x++;
}
ivashkevich 23.06.2019 в 17:43

Переменная n не проинициализирована. В самый первый раз, где она используется в качестве ключа массива будет ошибка! Ведь такой переменной ещё нет. И не нужна она вам. Добавляйте элементы в массив без использования ключа.

esqrx 05.06.2019 в 14:59
<?php

$i = 344;
while ($i <= 357) {
    if ($i % 2 == 0) {
        $arr[] = $i;
    }
    $i++;
}

foreach ($arr as $value) {
    echo $value;
    echo '<br>';
}
ivashkevich 06.06.2019 в 09:29

Отлично

Bizzzon 05.07.2019 в 12:30
$i = 344;
while ($i < 357 ) {
    if ($i % 2 == 0) {
        $array[] = $i;
    }
    $i++;
}
foreach ($array as $value) {
    echo $value . ' ';
}
ivashkevich 07.07.2019 в 17:57

Отлично!

Reechniy 07.07.2019 в 15:39
<?php

$i=345;

while ($i<=357){
    echo $i;
   if( $i%2==0){
       $arr[]=$i;
   }
   $i++;
    echo'<br>';
}
echo 'Четные: ';
foreach ($arr as $value) {
    echo $value.',';
}
ivashkevich 07.07.2019 в 17:58

Отлично!

kvakazuabr 14.07.2019 в 08:29

1
$arr3 = [];
    $num = 345;
    while($num<357) {
        $num++;
        if($num%2===0) {
            $arr3[] = $num;
        }
    }
    foreach($arr3 as $index => $speed) {
        echo $index . ' ' . $speed . '<br>';
    }
2 
не стоит этого делать будет бесконечно выводить 1 пока не зависнет страница 

3
задает максимальное время в секундах, в течение которого скрипт должен полностью загрузиться.
`4 выводит n-количество 1 и останавливается``
ivashkevich 14.07.2019 в 09:07
  1. Если вы поменяете начальное число на 344, то оно пропустится. Сначала нужно выполнять проверку, а потом уже инкрементить число.
  2. Ок
  3. Так какой будет результат?
AlexxxEy 16.07.2019 в 23:51

$i = 345;
while($i != 357){
    $i++;
    if($i % 2 == 0){
        $arr[] = $i;
    }
}
foreach($arr as $index => $n){
    print $index . ' => ' . $n . '</br>';
}
print '</br>';
ivashkevich 17.07.2019 в 04:52

Если вы поменяете начальное число на 344, то оно пропустится. Сначала нужно выполнять проверку, а потом уже инкрементить число.

Aleks 09.08.2019 в 12:33

С помощью цикла while создайте массив, содержащий чётные числа от 345 до 357. Затем выведите элементы массива с помощью цикла foreach.


<?php
$arrayEvenNumbers[0];
$i = 345;

while ($i <= 357) {
        if ($i % 2 == 0){
            $arrayEvenNumbers[] = $i;
        }
        $i++;
}

foreach ($arrayEvenNumbers as $index => $value){
   echo $value . '<br>';
}

**К Бесконечному циклу**
ivashkevich 10.08.2019 в 07:18

Если начальная граница сместится и будет четным числом, например:

$i = 345;

то это число в выборку не попадет. Счётчики инкрементятся в конце итерации, как правило, а не в начале.

Aleks 12.08.2019 в 13:48

Поправил

ivashkevich 13.08.2019 в 06:33

Отлично!

Vladimir96 13.08.2019 в 09:34
//Домашнее задание
//Массив внутри цикла
    $numberForArr = 345;

    while($numberForArr < 358) {

        if($numberForArr % 2 == 0) {
            $array[] = $numberForArr;
        }
        $numberForArr++;
    }

    foreach ($array as $number) {
        echo $number;
        echo '<br>';
}
//Проверка кода
    while (true) {
        echo 1;//бесконечный цикл с выводом 1
    }

 /*Когда я прописал /max_execution_time = 1,
 то скрипт выдал ошибку,Fatal error: Maximum execution time of 1 second exceeded*/
ivashkevich 13.08.2019 в 10:06

В первом задании цикл foreach бессмысленный. Там в массиве всегда один элемент. Ознакомьтесь с другими решениями. Не нужно было делать цикл в цикле.

Vladimir96 13.08.2019 в 11:46

Такой вопрос, почему когда мы пишем такой код

$arr[] = $x;

то значение переменной вставляется в индекс массива, а не заменяет его на само значение переменной? Или я что-то не правильно понял?

ivashkevich 13.08.2019 в 11:51

Ничего в индекс массива не вставляется. Эта запись добавляет элемент в массив. А в вашем коде каждый раз создаётся новый массив с одним элементом.

[email protected] 25.08.2019 в 19:15
<?php

function get_EvenNumb(int $x, int $y)
{
    if($x - $y > 0) {
        $max = $x;
        $min = $y;
    }
    else{
        $max = $y;
        $min = $x;
    }

    while ($max >= $min)
    {
        if($min % 2 == 0)
        {
            $even[] = "$min";
        }
        $min++;
    }
    foreach ($even as $value) {
        echo $value . '<br>';
   }

}

get_EvenNumb(345,750);
ivashkevich 26.08.2019 в 07:03

В именах функций не должно быть никаких подчеркиваний.
$even[] = "$min"; - зачем здесь число в строку превращаете?

Ooleg 26.08.2019 в 17:41
$even = [];
$i = 345;

while ($i <= 357){
    if ($i% 2 == 0){
        $even[] = $i;
    }
    $i++;
}

foreach ($even as $value){
    echo $value;
    echo '<br>';
}
ivashkevich 28.08.2019 в 05:39

Число 357 не проверяется.

Ooleg 28.08.2019 в 09:05

Спасибо, поправил.

ivashkevich 28.08.2019 в 17:44

Теперь ок

Dreft 01.09.2019 в 20:18
<?php
$arr = [];
$i = 345;
while ($i <= 357) {
    if ($i % 2 == 0) {
        $arr[] = $i;
    }
    $i++;
}
foreach ($arr as $value) {
    echo $value . " ";
}
ivashkevich 02.09.2019 в 05:02

Отлично

Clawson 04.09.2019 в 13:45
<?php
$evenNums = [];
$startPoint = 345;
$endPoint = 357;
$count = $startPoint;
while ($count <= $endPoint){
    if ($count % 2 == 0) {
        $evenNums[] = $count++;
    }
    else {
        $count++;
    }
}
foreach ($evenNums as $num) {
        echo $num . '<br>';
    }

max_execution_time задает максимальное время в секундах (int), в течение которого скрипт должен полностью загрузиться. Если этого не происходит, работа скрипта завершается. Помогает исключить зависания при корявом коде. По умолчанию - 30 секунд. Если PHP запущен из командной строки, это значение по умолчанию равно 0.

ivashkevich 04.09.2019 в 21:21

Лучше в конце итерации делать инкремент, в одном месте. В остальном все хорошо.

H3licoptero 22.09.2019 в 19:01

Вот на задаче с перебором массива я убедился окончательно, что программирование не всем дано) Солидарен с [email protected]. Тоже не осилил. А из ответов в комментариях понял, что сложного ничего не было. Артём, какие толковые ресурсы для практики Вы бы могли порекомендовать ещё? Просто ясно, что если это не пойму, дальше не смогу двигаться нормально.

ivashkevich 23.09.2019 в 06:30

https://www.hackerrank.com/ можно тут простые задачи поискать. Но вряд ли будет что-то проще, чем этот урок

H3licoptero 23.09.2019 в 10:15

Спасибо! Буду делать)

dliashchenko 24.09.2019 в 15:56
<?php
$arrayNumbers = [];
$startNumber = 345;
$endNumber = 357;

while( $startNumber <= $endNumber){
        if($startNumber %2 == 0){
            $arrayNumbers[] = $startNumber;
        }
        $startNumber++;
}

foreach ($arrayNumbers as $number) {
    echo $number.",<br/>";
}
ivashkevich 24.09.2019 в 20:18

++$startNumber - когда нет разницы, что первее сделать, увеличить и вернуть, или вернуть а потом увеличить, стоит использовать постинкремент

H3licoptero 24.09.2019 в 22:05
$ar = [];
$i = 345;

while ($i <= 357) {
    if ($i % 2 === 0) {
        $ar[] = $i;
    }
    $i++;
}

foreach ($ar as $value) {
    echo $value . '<br>';
}

Сделяль(насколько можно считать это самостоятельным решением после стольких фейлов))

ivashkevich 27.09.2019 в 17:42

Последнее число не проверяется. Если потом вдруг верхняя граница изменится на 358, то оно не попадет в массив четных чисел. А должно.

kvakazuabr 10.10.2019 в 19:49
$i = 345;
$arr = [];
while ($i < 357) {
  if($i%2==0) {
    $arr[] = $i;
  }
  $i++;
}
foreach($arr as $value) {
  echo $value . ' ';
}

бесконечно выводило 1
изменил запустил и особой разницы не заметил

ivashkevich 10.10.2019 в 21:55

Отлично. Значит нужно ещё меньше таймаут поставить.

Evilinside 14.10.2019 в 18:52
//С помощью цикла while создайте массив, содержащий чётные числа от 345 до 357. Затем выведите элементы массива с помощью цикла foreach.

$i = 345;
$arr = [];

while ($i <= 357) {

    if ($i % 2 == 0) {
        $arr[]=$i;
    }
    $i++;
}
foreach ($arr as $elem){
    echo $elem."\n";
}

//2ое задание: Цикл будет бесконечным ( в данном случае скрипт проработает 30 секунд, после чего автоматически прекратит работать). Если поставить значение max_execution_time = 1, то скрипт прекратит работу через 1 секунду.

ivashkevich 14.10.2019 в 20:18

Супер!

[email protected] 15.10.2019 в 11:49
<?php
$i=345;
$mass=[];
while ($i<357) {
      if ($i %2 == 0) {
    $mass[] = $i;

}
    $i++;
}

var_dump($mass);
?>
2ое задание - это бесконечный цикл.
при max_execution_time 1 секунда получаем: Fatal error: Maximum execution time of 1 second exceeded in W:\domains\myproject.loc\www\content.php on line 3
ivashkevich 15.10.2019 в 13:21

Поправьте отступы, почему всё пляшет? В PhpStorm можно нажать Ctrl+Alt+L и оно само исправится.

Не вижу второго цикла foreach. Перечитайте ДЗ.

Число 357 тоже должно проверяться. Верхняя граница может измениться, а код должен продолжить работать. Изменим, например, на 358, а оно не будет проверяться. Исправьте это.

[email protected] 16.10.2019 в 09:14
<?php
$i = 345;
$mass = [];
while ($i <= 357) {
    if ($i % 2 == 0) {
        $mass[] = $i;
    }
    $i++;
}
foreach ($mass as $value) {
    echo $value . ' ';
}
ivashkevich 16.10.2019 в 10:03

Отлично

sar16520 16.10.2019 в 15:35
<?php 

$x = 345;

while($x <= 357){
    if($x % 2 ==0){
        $val[]= $x;

    }
    $x++;
}
foreach($val as $sum){
    echo($sum);
    echo('<br>');
}
ivashkevich 16.10.2019 в 21:22

echo - не функция. Не нужно правую часть помещать в скобки.

    if($x % 2 ==0){
        $val[]= $x;

    }

Почему здесь одна строка пустая?

andreskrip 10.11.2019 в 18:19
// С помощью цикла while создайте массив, содержащий чётные числа от 345 до 357. Затем выведите элементы массива с помощью цикла foreach.
$i = 345;
$evenArray = [];

while ($i <= 357) {
        if ($i % 2 == 0) {
        $evenArray[] = $i;
    }
    $i++;
}
foreach ($evenArray as $number) {
    echo $number . '<br>';
}
  • Запустите следующий код: while (true) { echo 1; }. К чему это привело?
    К бесконечному циклу и выводу единиц.
  • Изучите, для чего нужна директива max_execution_time в файле конфигурации php.ini и установите её равной одной секунде. Снова запустите этот код.
    Эта директива устанавливает максимальное время загрузки скрипта. В случае превышения лимита, парсер завершает работу данного скрипта.
    После изменения конфигурации вылез фатал еррор: Maximum execution time of 1 second exceeded in C:\OpenServer\domains\myproject.loc\arrays.php on line 3
ivashkevich 11.11.2019 в 19:32

Числа 345 и 357 не проверяются, а должны.

andreskrip 15.11.2019 в 15:55

исправил

ivashkevich 15.11.2019 в 18:48

Теперь ок

[email protected] 15.11.2019 в 23:39

Первое задание интересно и легко)


<?php
$array = [];
$x = 345;

while($x < 358) {
    if ($x % 2 === 0) {
        $array[] = $x;
}
$x++;
}
foreach($array as $key => $test){
    echo $test;
    echo '<br>';
}

?>

Второе задание в принципе ожидаемо)

когда js учил по случайности делал похожие бесконечные циклы.

А вот max_execution_time чета не получиось сделать

ivashkevich 16.11.2019 в 05:39

Число 357 тоже должно проверяться.

YuraG 23.11.2019 в 23:06

$startNumber = 345;
$addArray = [];

while ($startNumber <= 357) {

    if ($startNumber % 2 == 0) {
        $addArray[] = $startNumber;
    }

    $startNumber++;
}

foreach ($addArray as $number) {
    echo $number . '</br>';
}

код:
<?php
while (true) {
echo 1;
}
К чему это привело? к постоянному выполнению тела цикла.

директива max_execution_time нужна для указания времени для полной загрузки скрипта.Если загрузка заняло более времени то загрузка прекращается.
ivashkevich 24.11.2019 в 20:30

Отлично

Diogen 25.11.2019 в 21:52
<?php
function fibonacci($n)
{
    if ($n==0){
        return 0;
    }
    elseif ($n==1) {
        return 1;
    }
    else {
        return fibonacci($n-1) + fibonacci($n-2);
    }
}

for ($n =0; fibonacci($n) <= 100000; $n++) {
       print(fibonacci($n) . ", ");
    }

?>
ivashkevich 26.11.2019 в 10:12

Крайне неоптимальное решение, но рабочее.

Salexandr 12.12.2019 в 22:51
$i = 345;
While ($i <= 357) {
    if ($i % 2 == 0) {
        $arr[] = $i;
    }
     $i++;
}
foreach ($arr as $odd){
    echo $odd;
    echo '<br>';
}
ivashkevich 14.12.2019 в 15:24

Отлично!

eNergy 12.01.2020 в 08:53
$x = 345;
$evenNumbers = [];
while ($x < 357) {
    if ($x % 2 == 0) {
        $evenNumbers[] = $x;
    }
    $x++;
}
foreach ($evenNumbers as $key => $value) {
    echo $key . ' - ' . $value;
    echo '<br>';
}

Привело к бесконечному циклу и зависанию сервера.
Директива max_execution_time решает проблему плохо написанного скрипта, как в нашем случае =) и задает значение 1 секунды, за это время скрипт должен полностью загрузиться.
Запустил код заново, вышла ошибка fatal error, которая говорит, что максимальное время выполнения превышено.

ivashkevich 12.01.2020 в 15:37

Отлично

[email protected] 17.01.2020 в 22:51

Код по 1-му пункту задания:

<?php

$i = 345;

while ($i <= 357) {
   if ($i == 345) {
        $array ['element']= $i;
        $i ++;
    } else {
        $array [] = $i;
        $i++;
    }
}

foreach ($array as $element) {
    echo $element  , '<br>';
}

Это бесконечный цикл:

<?php
while (true) {
echo 1;
}

К чему привело? Комп тупит 60 сек, а потом выполнение прерывается.

php.ini редактируется в ЛКМ на флажок в трее -> Дополнительно -> Конфигурация -> PHP
Находишь строку с max_execution_time и там сколько поставишь, столько и будет тупить комп.
Подозреваю, что дробное число секунд нельзя ставить, или я не прав?

ivashkevich 20.01.2020 в 04:58
   if ($i == 345) {
        $array ['element']= $i;
        $i ++;
    }

Это что за ерунда? Для чего это?

Подозревать ничего не надо) Есть документация

[email protected] 26.01.2020 в 19:32

Невнимательно прочел задание.
Так лучше?

<?php

$i = 345;
$array = [];

while ($i <= 357) {
   if ($i % 2 == 0) {
       $array [] = $i;       
   } 
   $i++;
}

foreach ($array as $element) {
    echo $element  , '<br>';
}
ivashkevich 28.01.2020 в 18:47

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

$array [] = $i;
Apatit 19.02.2020 в 15:22

Долго мучился, но вроде так:

<?php
$number = 345;
while ($number < 357) {
    if ($number % 2 === 0) {
        $arr[] = $number;
    }
    $number++;
}
foreach ($arr as $value) {
    echo $value . '<br>';
}
?>
ivashkevich 19.02.2020 в 19:21

Отлично

studentDev 11.03.2020 в 15:42

1:

while($zero < 10) {
        $zero++;
        $zeroArray = [345, 357];
        $zeroArrayNull = 0;
        foreach($zeroArray as $zeroArrayValue) {
            $zeroArrayNull += $zeroArrayValue;
        }
        $zeroArrayPlus = $zeroArrayNull;
        echo "<p></p>" . "Result whileZeroArray >>> " . $zeroArrayPlus;
    }

2 Вариант:

$numWhile = 345;
    while($numWhile <= 357) {
        if($numWhile % 2 == 1) {
            $arrWhile[] = $numWhile;
        }
        $numWhile++;
    }

    foreach($arrWhile as $arrWhileValue) {
        $arrWhileForeach += $arrWhileValue;
    }
    var_dump($arrWhile);
    $plusArrWhileForeach = $arrWhileForeach;
    echo "<p></p>" . "RESULT ________ >>>>>>>>>> " . $plusArrWhileForeach . "</br>";

2:

<?php
while (true) {      //Будет выполнять бесконечный цикл с выводом int 1
echo 1;
}

На 3 и 4 отвечу отдельно...

ivashkevich 14.03.2020 в 19:50
  1. Что-то вообще никак не относящееся к заданию
  2. Неправильно, нужно собирать четные. Что там в конце происходит вообще непонятно зачем
[email protected] 12.03.2020 в 14:38
<?php
$i = 2;

while ($i <= 100000) {
    echo $i;
    $i *= 2;
    echo '<br>';
}
$b = 345;
while ($b <= 357){
    if ($b % 2 == 0){
        echo '<pre>';
        echo $b;
        $array[] = $b;
    }   $b++;
}
//var_dump ($array);
foreach ($array as $key => $arr){
    echo '<pre>';
    echo $key .'  ' .$arr;
}
?>
ivashkevich 14.03.2020 в 20:12
$i = 2;

while ($i <= 100000) {
    echo $i;
    $i *= 2;
    echo '<br>';
}

Для чего это?

        echo '<pre>';
        echo $b;

Внутри while нужно было только заполнить массив.

    }   $b++;

Нужно такое разделять переносами строк. Не нужно лепить всё в одну.

Тег pre нигде не закрывается. Более того, его использование в подобном примере вообще не уместно.

studentDev 12.03.2020 в 15:35

max_execution_time = (int)(default = 30) | Настройка в php.ini
Эта настройка позволяет менять значение нагрузки скрипта по умолчанию (30 с), тем самым помогает работать со скоростью работы скрипта.

  • Если за указанное время не произошла загрузка скрипта то парсер завершает свою работу :3
  • При указаний в настройке значение равное 1, скрипт начал загружаться быстрее :)
ivashkevich 14.03.2020 в 20:14

Отлично

serjioG 13.03.2020 в 20:14
<?php
$array = [];
$y = 345;

while ($y <= 357)
{
if ($y % 2 == 0) {
    $array[] = $y;
}
$y++;
}
foreach ($array as $value){
    echo $value . ',';

}

Код

<?php
while (true) {
echo 1;
}

Бесконечные число 1 вывело.

ivashkevich 14.03.2020 в 20:15

Отлично

[email protected] 26.03.2020 в 15:41
<?php
$i = 344;
while ($i <= 357){
    if ($i % 2 == 0){
            $arr[] = $i;
}
    $i++;
}
foreach ($arr as $b => $value){
    echo $value;
    echo '<br>';
}
?>
ivashkevich 27.03.2020 в 15:06

Скобки и отступы пляшут, перед отправкой сюда в шторме нажимайте ctrl+alt+L, а еще лучше привыкайте сразу писать правильно.
По алгоритму - всё ок.
Закрывающий тег ?> в конце не нужен!

WarLikeLaux 06.04.2020 в 14:31
$evenNumbers = [];

$min = 345;
$max = 357;

$i = --$min;

while (++$i <= $max) {
    if ($i % 2 == 0) {
        $evenNumbers[] = $i;
    }
}

var_dump($evenNumbers);
ivashkevich 06.04.2020 в 16:01

Ок, хоть и слегка запутанно. Лучше инкремент из условия цикла вынести в конец его тела

Timurik 09.04.2020 в 17:19
$number = 345;

while ($number <= 357) {
    if ($number % 2 == 0) {
        $arrayEvenNumber [] = $number;
        $number += 1;
    }
    $number += 1;   
}
foreach ($arrayEvenNumber as $evenNumber) {
    echo $evenNumber . '<br>';
}

Результат:
346
348
350
352
354
356

При запуске кода:

<?php
while (true) {
echo 1;
}

произойдёт зацикливание, т.е. скрипт не сможет выйти из цикла.

Директива max_execution_time задает максимальное время в секундах, в течение которого скрипт должен полностью загрузиться, при выставлении 1 секунда выдаст сообщение:
"Fatal error: Maximum execution time of 1 second exceeded in C:\OSPanel\domains\myproject.loc\www\index.php on line 4", что говорит о том что скрипт в течении 1 секунды полностью не загрузился и "завис" на четвёртой строчке кода.
На сколько секунд лучше выставлять эту директиву?

ivashkevich 09.04.2020 в 17:42

Отлично. Значение директивы сильно зависит от проекта. Если мы точно знаем, что сайт отвечает не дольше секунды, значит и значение нужно выставить соотвествующее.

Timurik 09.04.2020 в 17:49

Большое спасибо!

[email protected] 10.04.2020 в 11:32

С помощью цикла while создайте массив, содержащий чётные числа от 345 до 357. Затем выведите элементы массива с помощью цикла foreach.

$evenNums = [];
$i = 345;
while ($i <= 357) {
$i++;
if ($i % 2 == 0) {
$evenNums[] = $i;
}
}
foreach ($evenNums as $num) {
echo $num . '<br>';
}

Запустите следующий код:
<?php
while (true) {
echo 1;
}
К чему это привело?

Даже запускать не стану - браузер зависнет, продолжая при этом бесконечно печатать единицы :)

ivashkevich 10.04.2020 в 13:15

Что с отступами? Оформляйте как следует

[email protected] 10.04.2020 в 13:17

Виноват. Успел привыкнуть к IDE, которая выставляет отступы автоматически. Этот же код писал напрямую в комментарий

$evenNums = [];
$i = 345;
while ($i <= 357) {
    $i++;
    if ($i % 2 == 0) {
        $evenNums[] = $i;
    }
}
foreach ($evenNums as $num) {
    echo $num . '<br>';
}
ivashkevich 10.04.2020 в 13:23

Почему $i++ в самом начале? Если входное число изменится на 344, то оно пропустится.

n.yurasheva 11.04.2020 в 00:23
$i = 345;
while ($i < 357) {
    if ($i % 2 == 0) {
        $array[] = $i;
    }
    $i++;
}
foreach ($array as $index => $arrayElement) {
    echo '<br>'.$index . ' ' . $arrayElement;
}
ivashkevich 11.04.2020 в 21:18

Отлично

ruslankandiba 12.04.2020 в 13:16
<?php

$array = [];
$startNum = 347;
$finishNum = 357;

while ($startNum < $finishNum){
    if($startNum % 2 == 0){
        $array[] = $startNum;
    }
    $startNum++;
}

foreach ($array as $value) {
    echo $value .'<br>';
}
ivashkevich 13.04.2020 в 12:59

Супер!

Fill 13.04.2020 в 05:12
<?php

$i = 345;
$evenArr = [];

while ($i <= 357) {
    if ($i % 2 == 0) {
        $evenArr[] = $i;
    }
    $i++;
}

foreach ($evenArr as $elem)
    echo $elem . '  ';
ivashkevich 13.04.2020 в 14:50
foreach ($evenArr as $elem)
    echo $elem . '  ';

Где скобки??!

[email protected] 13.04.2020 в 12:32
<?php

$evenArray = [];
$x = 345;
while ($x <= 357) {
    $x % 2 == 0 ? $evenArray[] = $x++ : $x++;
}
foreach ($evenArray as $even) {
    echo $even . '<br>';
}

Вот домашка. Есть такое предложение - можно ли записать вторую задачу со степенями числа 2 таким образом и лучше это или хуже предложенного решения?

<?php

$x = 0;
while (2**$x <= 100000) {
    echo 2**$x++ . '<br>';
}
ivashkevich 13.04.2020 в 15:00

Записать можно. Решение в целом даже лучше, так как рекурсия это всегда оверхед, по сравнению с циклами

[email protected] 13.04.2020 в 17:45

Добрый вечер!

<?php

$from = 345;
$array = [];

while ($from <= 357) {
    if ($from % 2 == 0) {
        $array[] = $from;
    }
    $from++;
};
foreach ($array as $val) {
    echo $val . '</br>';
}
ivashkevich 14.04.2020 в 19:00

Отлично

[email protected] 13.04.2020 в 18:04

max_execution_time -Увеличить время выполнения скрипта(по умолчанию 30 секунд)

<?php
ini_set('max_execution_time', 1);

Выставил =1 секунда.

ivashkevich 14.04.2020 в 19:00

Отлично

Kennard 16.04.2020 в 20:24
<?php

//С помощью цикла while создайте массив,
// содержащий чётные числа от 345 до 357.
// Затем выведите элементы массива с помощью цикла foreach.

$numbers = 345;

while ($numbers >= 345 and $numbers <= 357) {
    if ($numbers % 2 == 0) {
        $arrayNumbers[] = $numbers;
    }
    $numbers++;
}

foreach ($arrayNumbers as $i) {
    echo $i;
    echo "<br>";
}
<?php
while (true) {
echo 1;
} 

приводит к бесконечному выводу единицы, после смены директивы у меня ничего не поменялось, что я мог сделать не так?

ivashkevich 17.04.2020 в 09:10

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

Developer 20.04.2020 в 17:18
<?php
$x = [];
$i = 345;
while ($i <= 357) {
    if ($i % 2 == 0) {
        $x[] = $i;
    }

    $i++;
}
foreach ($x as $index => $a) {
 echo $index . ' ' . $a . '<br>';
}

Запустил код, это привело к бесконечному зацикливанию кода и выводу единиц.
Директива max_execution_time задает максимальное время в секундах, в течение которого скрипт должен полностью загрузиться. Если этого не происходит, парсер завершает работу скрипта. Этот механизм помогает предотвратить зависание сервера из-за плохо написанного скрипта.
Файл изменил. Код запустил, через несколько секунд выдало ошибку и код прекратился выполняться.
Таким образом мы ограничиваем время для выполнения скрипта, чтобы в случае зацикливания или зависания не было бесконечной загрузки.

ivashkevich 20.04.2020 в 18:05

Если этого не происходит, парсер завершает работу скрипта

А что за парсер?

Developer 20.04.2020 в 18:55

А вот так написано в официальной документации, которая непойми какая. Думаю это слово можно заменить на сервер? Или лучше так: "Если этого не происходит то скрипт завершает свою работу".

ivashkevich 21.04.2020 в 06:22

Правильнее будет сказать интерпретатор

Developer 21.04.2020 в 09:24

Да, согласен

[email protected] 23.04.2020 в 18:49
<?php
$arr = [];
$a = 345;
while ($a >= 345 && $a <= 357) {
    if ($a % 2 === 0) {
        $arr[] = $a;
    }
    $a++;
}
foreach ($arr as $value) {
    echo $value. ' ';
}
ivashkevich 23.04.2020 в 19:25

Отлично!

Stimi 27.04.2020 в 20:53
<?php
$a = 345;
$arr = [];

while ($a <= 357) {
 if ($a % 2 == 0) {

     $arr[] = $a;
 }
$a++;

}

foreach ($arr as $even) {
    echo 'четное число ' . $even;
    echo '<br>';
}

Выполнение
while (true) {
echo 1;
}
привело к множественному числу 1.
После Гугления max_execution_time стало очевидно, что эта директива отвечает за время исполнения скрипта. По идее, изменение ее значения на 1 должно привести к прерыванию скрипта через 1 секунду. Но мне не свезло. По твоему совету к одному из предыдущих комментариев к этому уроку, загуглил функцию sleep. Выставив ее значение на 1, цикл выполнялся 1 секунду. Успев нарисовать две единицы, он перестал выполнятся c появившейся строкой " Fatal error: Maximum execution time of 1 second exceeded "

ivashkevich 27.04.2020 в 20:57

По идее, изменение ее значения на 1 должно привести к прерыванию скрипта через 1 секунду. Но мне не свезло.

Вам свезло, у вас очень быстрый комп, который нагенерил слишком много единиц. Так, что браузер просто с ума сошел.

Stimi 27.04.2020 в 21:12

Ну хоть где то фартануло))

ivashkevich 28.04.2020 в 06:15

:D

titelivus 29.04.2020 в 08:33

1.

<?php

$i = 345;
$arr = [];

while ($i <= 357) {
    if ($i % 2 == 0) {
        $arr[] = $i;
    }
    $i++;
}

foreach ($arr as $value) {
    echo $value . '<br>';
}
  1. Это привело к бесконечному циклу.
  2. Я изменил max_execution_time на 1 секунду, однако ничего не поменялось, скрипт продолжал бесконечно работать. (После редактирования php.ini я сохранил настройки и перезапустил сервер). Полагаю после изменения max_execution_time на 1 секунду, скрипт должен завершить свою работу в течении 1 секунды.
ivashkevich 29.04.2020 в 19:16

Отлично

[email protected] 30.04.2020 в 08:05
<?php
$numb = 345;
$arr = [];
while ($numb <= 357) {
    if ($numb % 2 == 0) {
        $arr[] = $numb;
    }
    $numb ++;
}
foreach ($arr as $elem){
    echo $elem . '<br>';

}
ivashkevich 30.04.2020 в 11:43

Отлично

$numb ++;

Пробел не нужен

foreach ($arr as $elem){
    echo $elem . '<br>';

}

Лишний перенос

Придерживайтесь оформления как в уроках, будьте аккуратнее

[email protected] 30.04.2020 в 08:11

После запуска кода сервер вывел бесконечное число единиц. Директива max_execution_time нужна для изменения времени выполнения скрипта, само слово _execution_говорит об этом. Но после установки на 1 секунду сервер просто затупил. Я читал ,что в принципе так делать нельзя. Бесконечная работа скрипта приводит к зависанию сервера.

ivashkevich 30.04.2020 в 11:44

Ок. Ну на самом деле затупил ваш браузер, а не сервер)

[email protected] 30.04.2020 в 13:02

Ок. Очередная запарка. Не сервер а браузер.

[email protected] 30.04.2020 в 08:39
$i = 345;
$arr = [];
while ($i <= 357) {
    if ($i % 2 == 0) {
        $arr[] = $i;
    }
    $i++;
}
foreach ($arr as $value) {
    echo $value . '<br>';
}
ivashkevich 30.04.2020 в 11:44

Отлично!

Sviatoslav 01.05.2020 в 21:20

Мой пример

$i = 345;

while ($i < 357) {
  if ( $i % 2 == 0) {
     $arr[] = $i; 
    }
  $i++; }

foreach ( $arr as $num) {
  echo $num . ' '; }
ivashkevich 02.05.2020 в 16:13

Почему всё пляшет? Оформление делайте как в уроках. Для этого в шторме можно нажать Ctrl+Alt+L

357 не проверяется, а должно.

Sviatoslav 02.05.2020 в 19:21
<?php
$i = 345;

while ($i <= 357) {
    if ($i % 2 == 0) {
        $arr[] = $i;
    }
    $i++;
}

foreach ($arr as $num) {
    echo $num . ' ';
}

Исправил. Прошу прощение за оформление. Исправлюсь.

ivashkevich 03.05.2020 в 20:52

Отлично

Hellbound 07.05.2020 в 23:14
<?php

$i = 345;
$array = [];

while ($i <= 357) {
    if ($i % 2 == 0) {
        $array[] = $i;
    }
    $i++;
}

foreach ($array as $element) {
    echo $element;
    echo '<br>';
}

А насчет другого задания, то без изменения значения единицы выводятся бесконечно. Если же изменить значение max_execution_time на 1, то через несколько секунд выдается Fatal error. Нужна эта директива для ограничения времени выполнения скрипта. Но у меня есть немного глупый вопрос. Все-таки в первом случае единицы загружаться прям бесконечно не будут, выполнение кода через некоторое время будет остановлено, но при этом ошибка не выводится (по крайней мере у меня так со значением 60 и 30). Почему так? Мне идти читать документацию?

ivashkevich 08.05.2020 в 20:19

Отлично. Ошибка выводится, ее браузер просто не может вывести из-за очень большого объёма результата

IePyton 08.05.2020 в 18:16
<?php

$min = 345;
$max = 357;

while ($min <= $max)  {
    if ($min % 2 == 0) {
        $array [] = $min;
    }
    $min++;
}

foreach ($array as $value) {
    echo $value . '<br >';
}

<?php
while (true) {
echo 1;
} - привело к бесконечному выводу 1
изменил в мампе max_execution_time на 1 - все равно почему то бесконечный цикл
ivashkevich 08.05.2020 в 20:31

Отлично

[email protected] 08.05.2020 в 20:13
<?php
$i = 345;
$array = [];
while ($i <= 357) {
    if ($i % 2 == 0) {
        $array[] = $i;
    }
    $i++;
}
foreach ($array as $value) {
    echo $value . " ";
}

while (true) {
    echo 1;
}
/* Этот код вызовет бесконечный цикл. Если зададим max_execution_time = 1, то цикл завершится с ошибкой, т.к. максимальное время выполнения ограничено 1 секундой. */
while (true) {
    echo 1;
}
ivashkevich 08.05.2020 в 20:36
echo $value . " ";

Строки пишутся в одинарных кавычках

annferny 10.05.2020 в 16:37
<?php

$array = [];
$i = 0;

while ($i < 357) {
    $i % 2 == 0 && $i > 345 ? $array[] = $i++ : $i++;
}
foreach ($array as $i){
    echo $i;
    echo '<br>';
}

Если ввести этот код:

<?php
while (true) {
echo 1;
}

программа будет бесконечно выводить единицу, пока не выдаст ошибку (хотя у меня не вывела, а просто прекратила загружать по прошествии времени).
Если поменять значение на единицу, то ошибка должна выдаваться сразу через секунду. Но у меня продолжает грузить бесконечное число единиц, несмотря на перезагрузку сервера. Судя по комментариям, не у одной меня такая проблема, но она так и осталась без ответа =D

ivashkevich 10.05.2020 в 18:42

Некорректное использование тернарного оператора. Он используется для возврата одного из значений в правой части в левую часть выражения. У вас же он применяется для побочного вызова кода в случае выполнения или невыполнения условия. Используйте в таких случаях if-else.

annferny 10.05.2020 в 20:58

Хорошо, учту на будущее) Но к слову, в уроке "Условия в PHP" в разделе про тернарный оператор написано, что он представляет собой сокращенную форму конструкции if-else, что тоже получается не совсем корректно =)
И насчет max_execution_time, это проблема моего браузера получается или какая-то другая причина?

ivashkevich 12.05.2020 в 07:39

Дело в том, что скрипт завершается через секунду, но за эту секунду он умудряется нагенерить очень много единиц. Настолько много, что вкладка браузера просто зависает.

nersesyan.sargis 14.05.2020 в 15:43
<?php
$a = 345;
$b = 357;

while ($a <= $b) {
    if ($a % 2 == 0) {
        $array [] = $a;
    }
    $a++;
}

foreach ($array as $value) {
    echo $value . '<br >';
}
ivashkevich 15.05.2020 в 18:11

Отлично

superbobr 19.05.2020 в 20:41

1)

<?php
$arr = [];
$a = 345;
while ($a <= 357) {
    $arr[] = $a;
    $a += 2;
}

var_dump($arr);

2)бесконечный цикл

3)максимальное время в секундах, за которое скрипт должен полностью загрузиться

ivashkevich 20.05.2020 в 07:57

1-ое задание неверно сделано, перечитайте. По-хорошему внутри цикла должна быть проверка. И делайте код сразу таким, чтобы он оставался рабочим, даже если входные числа 345 и 347 заменятся другими.

[email protected] 26.05.2020 в 01:03

Массив с помощью цикла while:

$a = 345;
$b = 357;
$mas = [];
while($a <= $b){
    if($a % 2 === 0){
    $mas[] = $a;}
    $a++;
}
foreach($mas as $nums){
 echo  $nums . '; ';
}
ivashkevich 26.05.2020 в 10:20

Отлично

[email protected] 26.05.2020 в 13:53

Артем, скажите, в ОпенСервере можно поставить версию PHP 7.3, а мы учимся на 7.0. Есть ли разница или можно повысить версию?

ivashkevich 27.05.2020 в 17:48

Да, конечно. Ставьте самую последнюю.

[email protected] 31.05.2020 в 13:20
<?php
$q = 345;
$p = [];
//на этом этапе у нас выведутся числа от 345 до 357.
while ($q <= 357) {
    echo $q;
    if ($q % 2 == 0) {
        $p[] = $q;
    }
    $q++;
    echo '<br>';
}
/*после цикла foreach мы увидим только чётные числа
от 345 до 357*/
echo '<br><br>';
foreach ($p as $v) {
    echo $v . '<br><br>';
}
/*этот цикл привёл к бесконечно повторяющему числу "1",
до тех пор пока мы не превысили лимит выполнения*/
while (true) {
    echo 1;
}
/*eсли установить в конфигурациях php.ini директиву
max_execution_time = 1 вместо = 60. То вылезает
предупреждение Maximum execution time of 1 second exceeded*/
ivashkevich 01.06.2020 в 07:42

Отлично

omeluhin89 17.06.2020 в 13:56
<?php
$arrayEvenNumbers = [];
$x = 345;
while ($x <= 357) {
    if ($x % 2 === 0) {
        $arrayEvenNumbers[] = $x;
    }
    $x++;
}
foreach ($arrayEvenNumbers as $evenNumber) {
    echo $evenNumber;
    echo '<br>';
}
ivashkevich 18.06.2020 в 09:35

Закрывающий тег ?> в конце файла не нужен.

Проблема с форматированием. Делайте отступы и переносы как в уроках. Для этого в шторме можно нажать Ctrl+Alt+L

UtillitE 28.06.2020 в 17:37

Первая часть задания

<?php
$z = 345;
$num = [];
while ($z < 357){
    if ($z % 2 == 0){
        $num [] = $z;

    }
   $z += 1;
}
foreach ($num as $z) {
    echo $z . '<br>';
}
UtillitE 28.06.2020 в 18:35

ставила 1 сек в max_execution_time, перезапускала сервер, ничего не меняется - всё тот же бесконечный ряд единиц.

ivashkevich 29.06.2020 в 11:14

Это норм, просто очень быстрый процессор, который за секунду успевает нагенерировать столько единиц, что браузер зависает.

ivashkevich 29.06.2020 в 11:14

Отлично. Только используйте инкремент.

VitaliyB 14.07.2020 в 14:48
$x = [];
$i = 345;

while ($i <= 357) {
    if ($i % 2 == 0) {
        $x[] = $i;
    }
    $i++;
}
foreach ($x as $value) {
    echo $value;
    echo '<br>';
};
ivashkevich 14.07.2020 в 19:20

Супер!

Nobody 30.07.2020 в 10:43
  1. <?php
    
    $i = 345;
    $newArr = [];
    while ($i <= 357) {
        $newArr[] = $i;
        $i++;
    }
    foreach($newArr as $value) {
        echo $value . ' ';
    }
    1. Это бесконечный цикл
  2. Эта директива задает максимальное время в секундах, в течение которого скрипт должен полностью загрузиться. Если этого не происходит, парсер завершает работу скрипта. Этот механизм помогает предотвратить зависание сервера из-за плохо написанного скрипта.
ivashkevich 02.08.2020 в 17:21

Отлично

[email protected] 20.08.2020 в 23:02

1)

<?php
$arr = [];

$i = 348;

while (i < 357) {
    if (i % 2 == 0) {
        $arr[] = $i;
    }
    $i++;
};

foreach ($arr as $value) {
    echo $ value . '<br>';
}
ivashkevich 23.08.2020 в 09:02

Отлично

[email protected] 20.08.2020 в 23:03

2)

<?php
while (true) {
echo 1;
}

Это привело к зацикливанию. Программа заполняет экран единицами. Причина в том, что нет условия, когда программа выходила бы из цикла.
3) Директива max execution time определяет максимальное время, выделяемое на загрузку PHP-скрипта. Мы уменьшили время с 60 секунд на 1 секунду, чтобы снизить время на обработку кода в случае, если он плохо написан.

ivashkevich 23.08.2020 в 09:04

если он плохо написан

даже если он хорошо написан, это не даст ему выполняться дольше 1 секунды)

Malfak 06.09.2020 в 17:33

А с задачей где надо вывести единицу, то из-за того, что условие всегда true, тобишь истинно, то и выводить мы будем постоянно единицу.

<?php

$array = [];
$i = 345;

while ($i < 357) {
    $i++;
    if ($i % 2 == 0) {
        $array[] = $i;
    }
}

foreach ($array as $item) {
    echo $item . ' ';
}
ivashkevich 07.09.2020 в 12:52

Всё ок, только инкрементить лучше в конце цикла, и условие заменить на <= на случай если вместо 357 захотим написать 356.

Sergey503 11.09.2020 в 15:43
$i = 345;
$arr = [];

while ($i <= 357) {
    if ($i % 2 === 0) {
        $arr[] = $i;
    }
    $i++;
}
foreach ($arr as $array) {
    echo $array . ' ';
}
ivashkevich 11.09.2020 в 19:30

Отлично

MikeSiebel 15.09.2020 в 12:36

Добрый день!

  1. Массив четных чисел.
<?php
$a = 345;
$b = 357;
$arr = [];
while ($a <= $b) {
    $a % 2 == 1 ? $a += 1 : $a;
    var_dump($a);
    $arr[] = $a;
    $a += 2;
}
foreach ($arr as $value) {
    echo $value . '<br>';
}

Результат.
Добавил var_dump($a), чтобы показать, что такой скрипт работает быстрее… Сразу определяется с какого числа из заданного диапазона начинаются четные числа и далее этот диапазон заполняется четными числами ($a += 2;)

C:\xampp\htdocs\ws_lessons\index.php:7:int 346
C:\xampp\htdocs\ws_lessons\index.php:6:int 348
C:\xampp\htdocs\ws_lessons\index.php:6:int 350
C:\xampp\htdocs\ws_lessons\index.php:6:int 352
C:\xampp\htdocs\ws_lessons\index.php:6:int 354
C:\xampp\htdocs\ws_lessons\index.php:6:int 356

346
348
350
352
354
356

  1. Второе
    111111111111111111111111111111111111111111111111111111111111111111111
    
    ( ! ) Fatal error: Maximum execution time of 30 seconds exceeded in C:\xampp\htdocs\ws_lessons\index.php on line 3
    Call Stack
    #   Time    Memory  Function    Location
    1   0.2015  356144  {main}( )   ...\index.php:0
max_execution_time в файле конфигурации php.ini установлен равной 30 секундам. 
max_execution_time — определяет, как долго PHP-скрипт будет исполняться до того, как он будет принудительно остановлен.
После установки max_execution_time равной 1 секунде
( ! ) Fatal error: Maximum execution time of 1 second exceeded in C:\xampp\htdocs\ws_lessons\index.php on line 3
Call Stack
#   Time    Memory  Function    Location
1   0.2019  356144  {main}( )   ...\index.php:0
ivashkevich 27.09.2020 в 16:41

Некорректное использование тернарного оператора. Он используется для возврата одного из значений в правой части в левую часть выражения. У вас же он применяется для побочного вызова кода в случае выполнения или невыполнения условия. Используйте в таких случаях if-else.

Deo 23.10.2020 в 16:12

Задание о max_execution_time улыбнуло :)
Там тебе и уроки освоения гугла, и опыт зависания системы
и главное - руки больше бездумно совать никуда не охота :)

ivashkevich 26.10.2020 в 13:26

=)

Larisa 30.10.2020 в 21:54
<?php
$arr = [];
$x = 345;
while ($x <= 357) {
    if ($x % 2 == 0) {
        $arr [] =$x;
    };
    $x++;
}

foreach ($arr as $value) {
    echo $value . ' ';
}
echo "<br>";

Результат:
346 348 350 352 354 356
ivashkevich 31.10.2020 в 06:47

Всё отлично, но проблема с форматированием. Сделайте отступы и переносы как в уроках. Для этого в шторме можно нажать Ctrl+Alt+L

Larisa 31.10.2020 в 09:05

Спасибо, учту.

ivashkevich 31.10.2020 в 16:19
    if ($x % 2 == 0) {
        $arr [] =$x;
    };

Ещё заметил что после фигурной скобки стоит ненужная точка с запятой

Larisa 31.10.2020 в 19:28

Да, точно. Спасибо!

Larisa 30.10.2020 в 21:58

Второе задание
111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
Fatal error: Maximum execution time of 1 second exceeded in C:\OPENSERVER\OpenServer\domains\study\arrays.php on line 80

ivashkevich 31.10.2020 в 06:48

Ага, всё так и должно быть

Larisa 31.10.2020 в 09:06

Спасибо!

[email protected] 05.11.2020 в 20:16

Код


$arrayNumbers = [];
$x = 345;
while ($x <= 357) {
    if ($x % 2 == 0) {

    $arrayNumbers [] = $x;
}
    $x++;
}

foreach ($arrayNumbers as $Numbers) {
    var_dump($Numbers);
    echo '<br>';

}

Результат:

int(346)
int(348)
int(350)
int(352)
int(354)
int(356)

ivashkevich 06.11.2020 в 16:06

Всё отлично, но проблема с форматированием. Сделайте отступы и переносы как в уроках. Для этого в шторме можно нажать Ctrl+Alt+L

kan22 21.11.2020 в 14:27
<?php

$array = [];
$i = 345;

while ($i <= 357) {
    if ($i % 2 == 0) {
        $array[] = $i;
    }
    $i++;
}

foreach ($array as $item) {
    echo $item . '<br>';
}
ivashkevich 23.11.2020 в 17:33

Отлично!

Alex-neo 12.12.2020 в 23:16

Д/з числа от 345

<?php
$i=345;
while ($i<357)
{
  if ($i%2==0){
      echo $i;
      echo '<br>';
  }
$i++;
}
?>
ivashkevich 13.12.2020 в 07:35

357 не проверяется, хотя стоило бы.

Проблема с форматированием. Делайте отступы и переносы как в уроках. Для этого в шторме можно нажать Ctrl+Alt+L

Alex-neo 12.12.2020 в 23:32

Массив, содержащий чётные числа от 345 до 357 и вывод их с помощью цикла foreach

<?php
$chisla = [ ];
$i=345;
while ($i<357)
{
  if ($i%2==0){
      $chisla[ ] = $i;
  }
$i++;
}

foreach ($chisla as $v) 
{ echo $v.'<br>';
}
ivashkevich 13.12.2020 в 07:35

Выше уже ответил. Исправьте форматирование

[email protected] 15.01.2021 в 11:15
//1
$from = 345;
$evenNumbers = [];

while ($from <= 357)
{
    if($from % 2 == 0){
        $evenNumbers[] = $from;
    }
    $from++;
}

foreach ($evenNumbers as $value)
{
    echo $value;
    echo '<br>';
}
ivashkevich 15.01.2021 в 19:24

Отлично

Trop 25.01.2021 в 22:49
<?php

$i = 345;
$mass = [];
while ($i <= 357) {
    if ($i % 2 == 0) {
        $mass[] = $i;
    }
    $i++;

}
foreach ($mass as $res) {
    echo $res . '<br>';
}

Директива max_execution_time задаёт максимальное время в секундах, в течение которого скрипт должен полностью загрузиться, в противном случае работа скрипта принудительно завершается.
У меня изменения в файле php.ini никак не влияют на выполнение

<?php
while (true) {
echo 1;
}
ivashkevich 26.01.2021 в 06:07

Отлично.

У меня изменения в файле php.ini никак не влияют на выполнение

Просто за секунду успевает сгенерироваться столько единичек, что браузер не вывозит

Egor.Ka 03.02.2021 в 18:42

С помощью цикла while создайте массив, содержащий чётные числа от 345 до 357. Затем выведите элементы массива с помощью цикла foreach.
Вот, сделал

<?php
$i = 344;
$values=[];
while ($i < 357) {

    if($i % 2 ==0){
         $values[]= $i;
    }
    $i++;
}
foreach ($values as $value) {
    echo $value . '<br>';
}

Этот код приводит в к бесконечному циклу

<?php
while (true) {
echo 1;
}

А директива max_execution_time завершит работу скрипта, т.к. он не выполнится за заданное время (1 сек)

ivashkevich 04.02.2021 в 07:37

Отлично

Vladimir96 06.02.2021 в 22:09
$num = 345;
$arrNumbers = [];
while ($num < 358) {
    if($num % 2 === 0) {
        $arrNumbers[] = $num;
    }
    $num++;
}

foreach ($arrNumbers as $num) {
    echo $num . ' ';
}
  • Привело к бесконечному выводу 1
  • max_execution_time - 1
    скрипт выдал ошибку,Fatal error: Maximum execution time of 1 second exceeded
ivashkevich 08.02.2021 в 05:53

Отлично

serega19860511 19.04.2021 в 23:04
$i = 345;
$arr = [];
while ( $i <= 357) {
    $i++;
    if ($i % 2 == 0) {
        $arr[] = $i;
    }
}

foreach ($arr as $item) {
    echo $item . '<br>';
}
ivashkevich 20.04.2021 в 04:11

Отлично

Логические задачи с собеседований