Проверка массива на int

612
.
# ДоХтор (10.12.2016 / 20:49)
Beibarys, посмотри этот вариант, если он подходит, то можно остальной код, который должен выполняться, если все данные верны, добавить в условие (там прокомментровано).
Скопируй код целиком, и посмот
работает, но не так как надо
у меня можно ввести до 8 оценок. можно 5 оценок, можно 3 оценки вводить
а здесь например 8 оценок вводить обязательно, а то не работает
http://kaz-muz.kz/formula/rait.php
.
Beibarys

В общем разобрался
Самый ужасный код наверное))

if(($lab[0] != null && $lab[0] != strval(intval($lab[0])))){
Ошибка
}else{
не ошибка
}


И так каждый массив проверил ска(((
.

Beibarys,

у меня можно ввести до 8 оценок. можно 5 оценок, можно 3 оценки вводить
Надо было это в первом посту уточнить. Если завтра утром у меня будет время, то допишу код.
.
ДоХтор
# Beibarys (11.12.2016 / 00:13)
В общем разобрался
Самый ужасный код наверное))
И так каждый массив проверил ска(((
Посмотри на этот вариант (+/-)
<?php

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    $errors = [
        'r1'  => 'Введите оценки лабораторной работы!',
        'r2'  => 'Введите оценки практики!',
        'r3'  => 'Введите оценки СРО!',
        'r4'  => 'Введите оценки лекции!',
        'rk1' => 'Введите оценку РК!'
    ];

    $arr = array_map(function ($str) {
        $array = array_filter(explode(' ', $str), function ($i) {
            if (preg_match('~[0-9]~', $i)) {
                return (strlen($i) <= 3);
            }
        });
        return join(' ', $array);
    }, $_POST);
        
    $err = array_diff_key($errors, array_diff($arr, ['']));

    if (!empty($err)) {
        echo join('<br />', $err);
    } else {
        // Тут код, если введены данные без ошибок
    }
}

echo '<form method="POST">
	<p>Введите оценки лекции <b>(оценки вводить через пробел):</b></p>
	<input type="text" name="r4" value="" /> <br/>
	<p>Введите оценки практики <b>(оценки вводить через пробел):</b></p>
	<input type="text" name="r2" value="" /> 
	<p>Введите оценки СРО <b>(оценки вводить через пробел):</b></p>
	<input type="text" name="r3" value="" /> 
	<p>Введите оценки лабораторной работы 
    <b>(оценки вводить через пробел):</b></p>
	<input type="text" name="r1" value="" /> 
	<p>Введите оценку РК</p>
	<input type="text" name="rk1" value="" /> <br /><br />
	<button class="btn btn-info" name="send" />Считать</button><br /><br />
	</form>
';
Тут плюс в том, что теперь можно вводить в каждое поле от одной и более оценок, при этом, если будет среди чисел текст, то он будет проигнорирован, т.е. в массив попадают только цифры. А так же, теперь учитывается длина числа. Если будет написана строка такого вида 44 5555, то в массив попадёт только 44. Если же первое число в строке будет больше допустимой длины (например 5555 а после него 44), то будет вызвана ошибка из массива $errors.
.

Beibarys, немного подправил.

.
# ДоХтор (11.12.2016 / 13:26)
<?php

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$errors = [
'r1' => 'Введите оценки лабораторной работы!',
'r2' => 'Введите оценки практики!',
'r3' => 'Введите
работает, Спасибо!
Всего: 16