• Как решить задачу с массивом?

    @sagechild
    программист php
    Как еще один вариант.
    $arr = [1, 1, 2, 4, 3, 1, 1, 0, 1, 5, 8, 9, 1, 1, 2];
    $direction = null;
    $last = null;
    $countMonotony = array_reduce(
        $arr,
        function ($total, $item) use (&$direction, &$last) {
            if (is_numeric($last)) {
                if ($item > $last && $direction != 'up') {
                    $total++;
                    $direction = 'up';
                } elseif ($item < $last && $direction != 'down') {
                    $total++;
                    $direction = 'down';
                } elseif ($item == $last) {
                    $direction = null;
                }
            }
    
            $last = $item;
    
            return $total;
        }
    );
    
    var_dump($countMonotony); // int(6)
    Ответ написан
    Комментировать
  • Как решить задачу с массивом?

    nokimaro
    @nokimaro
    Меня невозможно остановить, если я смогу начать.
    <?php
    $arr = [1,1,2,4,3,1,1,0,1,5,8,9,1,1,2];
    
    $direction = null;
    $counter = 0;
    foreach($arr as $idx => $val)
    {    
        if(!isset($arr[$idx-1]))
        {
             continue;
        }
        
        if($val > $arr[$idx-1])
        {
            if($direction != 'incr')
            {
                 $direction = 'incr';
                 $counter++;
            }
        }
        elseif($val < $arr[$idx-1])
        {
            if($direction != 'decr')
            {
                 $direction = 'decr';
                 $counter++;
            }
        }
        else
        {
            $direction = null;
        }
    }
    
    var_dump($counter); //int(6)
    Ответ написан
    Комментировать
  • Как проверить существует ли такой пользователь в базе данных, чтобы можно было валидировать регистрацию пользователей на сайте?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Честно, вот я не понимаю, как такой вопрос в принципе может возникнуть.
    Ведь это базовый запрос SELECT и ничего больше. Ведь нельзя же писать авторизацию, не зная, как выбрать пользователя по логину? Веь потом этот же самый запрос понадобится при авторизации.
    $sql = 'SELECT * FROM users WHERE login=?';
    $query = $pdo->prepare($sql);
    $query->execute([$login]);
    $user= $query->fetch();
    if ($user) { 
        // вывести ошибку "такой пользователь уже зарегистрирован".
    } else {
        // твой код на вставку
    }


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