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

611
.

Здравствуйте! Есть инпут, туда можно вводить цифры от 0 до 100. и они разделены через пробел
то есть можно вводить так: 100 90 58 90
И эти цифры хранятся в массиве. в нем должно содержится только цифры.
Как проверить чтоб в массив можно вводить только цифры? если это не цифра то ошибка

.

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

.
# ramzes (10.12.2016 / 17:09)
обьединить массив и проверить равна ли строка числу
так:?
$r = array_merge($ar1,$ar2,$ar3,$ar4); 
if(!(is_int($r))){
Ошибка
}else{
Результат
}
.

implode\join

.
# ramzes (10.12.2016 / 17:21)
implode\join
не совсем понял
.
ramzes
$arr = [1, 2, 3];

$tostring = implode($arr, '');
if($tostring==(int)$tostring){ ...} // Вариант 1
if(preg_match('|^[\d]+$|', $tostring)){ ... } // вариант 2
.
# ramzes (10.12.2016 / 17:25)
$arr = [1, 2, 3];

$tostring = implode($arr, '');
if($tostring==(int)$tostring){ ...} // Вариант 1
if(preg_match('|^[\d]+$|', $tostring)){ ... } // вариант 2
не проверяет
Прикрепленные файлы:
.

покажи код?

.
Beibarys

вот, гавнокод

* (+/-)
mb_internal_encoding('UTF-8');
	$act = $_GET['act'];

	switch($act) {
		case 'enu':
		    
			$r1 = htmlspecialchars(trim($_POST['r1']));
			$r2 = htmlspecialchars(trim($_POST['r2']));
			$r3 = htmlspecialchars(trim($_POST['r3']));
			$r4 = htmlspecialchars(trim($_POST['r4']));
			$rk1 = htmlspecialchars(trim($_POST['rk1']));
			
			$lab = explode(" ",$r1);
			$prak = explode(" ",$r2);
			$sro = explode(" ",$r3);
			$lek = explode(" ",$r4);
			
			$lab1 = (($lab[0]+$lab[1]+$lab[2]+$lab[3]+$lab[4]+$lab[5]+$lab[6]+$lab[7])/count($lab))*0.3;
			$lab2 = (($lab[0]+$lab[1]+$lab[2]+$lab[3]+$lab[4]+$lab[5]+$lab[6]+$lab[7])/count($lab))*0.5;
			$prak1 = (($prak[0]+$prak[1]+$prak[2]+$prak[3]+$prak[4]+$prak[5]+$prak[6]+$prak[7])/count($prak))*0.2;
			$prak2 = (($prak[0]+$prak[1]+$prak[2]+$prak[3]+$prak[4]+$prak[5]+$prak[6]+$prak[7])/count($prak))*0.5;
			$prak3 = (($prak[0]+$prak[1]+$prak[2]+$prak[3]+$prak[4]+$prak[5]+$prak[6]+$prak[7])/count($prak))*0.7;
			$sro1 = (($sro[0]+$sro[1]+$sro[2]+$sro[3]+$sro[4]+$sro[5]+$sro[6]+$sro[7])/count($sro))*0.3;
			$lek1 = (($lek[0]+$lek[1]+$lek[2]+$lek[3]+$lek[4]+$lek[5]+$lek[6]+$lek[7])/count($lek))*0.2;
			$lek2 = (($lek[0]+$lek[1]+$lek[2]+$lek[3]+$lek[4]+$lek[5]+$lek[6]+$lek[7])/count($lek))*0.7;
            
            $raiting = $lek1+$prak2+$sro1;
            $raiting1 = $lek1+$prak1+$lab1+$sro1;
            $raiting2 = $lek1+$lab2+$sro1;
            $raiting3 = $prak3 + $sro1;
            $raiting4 = $lek2 + $sro1;
            
                    $labka = intval($_POST['r1']);
                    $praktika = intval($_POST['r2']);
                    $sroo = intval($_POST['r3']);
                    $lekci = intval($_POST['r4']);
                    
                    $arr = array($sro[0], $sro[1], $sro[2],$sro[3], $sro[4], $sro[5], $sro[6], $sro[7], $sro[8]);
                    $arr1 = array($lek[0], $lek[1], $lek[2], $lek[3], $lek[4], $lek[5], $lek[6], $lek[7], $lek[8]);
                    $arr2 = array($lab[0],$lab[1], $lab[2], $lab[3], $lab[4], $lab[5], $lab[6], $lab[7], $lab[8]);
                    $arr3 = array($prak[0], $prak[1], $prak[2],$prak[3],$prak[4], $prak[5], $prak[6],$prak[7],$prak[8]);
                    $sro_arr = implode($arr, ' ');
                    $lek_arr = implode($arr1, ' ');
                    $lab_arr = implode($arr2, ' ');
                    $prak_arr = implode($arr3, ' ');

                    if((is_numeric($sro[0]) || is_numeric($sro[1]) || is_numeric($sro[2]) || is_numeric($sro[3]) || is_numeric($sro[4]) ||
                    is_numeric($sro[5]) || is_numeric($sro[6]) || is_numeric($sro[7]) ||  is_numeric($sro[8]))){

                    if($lab[0] > 100 || $lab[0] < 0 || $lab[1] > 100 || $lab[1] < 0 || $lab[2] > 100 || $lab[2] < 0 ||
                    $lab[3] > 100 || $lab[3] < 0 || $lab[4] > 100|| $lab[4] < 0 || $lab[5] > 100 || $lab[5] < 0 || 
                    $lab[6] > 100 || $lab[6] < 0 || $lab[7] > 100 || $lab[7] < 0 || $lab[8] > 100 || $lab[8] < 0 ||
                    $prak[0] > 100 || $prak[0] < 0 || $prak[1] > 100 || $prak[1] < 0 || $prak[2] > 100 || $prak[2] < 0 || 
                    $prak[3] > 100 || $prak[3] < 0 || $prak[4] > 100 || $prak[4] < 0 || 
                    $prak[5] > 100 || $prak[5] < 0 || $prak[6] > 100 || $prak[6] < 0 || $prak[7] > 100 || $prak[7] < 0 || $prak[8] > 100 || $prak[8] < 0 ||  
                    $sro[0] > 100 || $sro[0] < 0 || $sro[1] > 100 || $sro[1] < 0 || $sro[2] > 100 || $sro[2] < 0 || $sro[3] > 100 || $sro[3] < 0 || 
                    $sro[4] > 100 || $sro[4] < 0 || $sro[5] > 100 || $sro[5] < 0 || $sro[6] > 100 || $sro[6] < 0 || $sro[7] > 100 || $sro[7] < 0 || $sro[8] > 100 || $sro[8] < 0 || 
                    $lek[0] > 100 || $lek[0] < 0 || $lek[1] > 100 || $lek[1] < 0 || $lek[2] > 100 || $lek[2] < 0 || $lek[3] > 100 || $lek[3] < 0 || 
                    $lek[4] > 100 || $lek[4] < 0 || $lek[5] > 100 || $lek[5] < 0 || $lek[6] > 100 || $lek[6] < 0 || $lek[7] > 100 || $lek[7] < 0 || 
                    $lek[8] > 100 || $lek[8] < 0 || $rk1 > 100 || $rk1 < 0) {
                      echo '<div class="alert alert-danger" >';
                      echo $arr1;
                      echo 'Поле имеет недопустимую оценку</div>';
                      echo '<div class="panel-footer"><a href="/formula/raiting.php">Назад</a></div></div><br/>';
                      
                    }else{   ////// ЛЕКЦИЯ, ПРАКТИКА, СРО
			    echo '<div class="alert alert-success" >';
			    if($r2 != '' && $r3 != '' && $r4 !='' && $r1 == ''){
                    echo '<br/> Оценки лекции: ';
			    for($i=0; $i<count($lek);$i++){
			        echo $lek[$i],", ";
			        }
			        echo '<br/> Оценки практики: ';
			    for($i=0; $i<count($prak);$i++){
			        echo $prak[$i],", ";
			        }
			        echo '<br/> Оценки СРО: ';
			    for($i=0; $i<count($sro);$i++){
			        echo $sro[$i],", ";
			        }
			        $s = ($raiting+$rk1)/2;
			            echo '<br/><br/> Оценка РК: '.$rk1.'';
			            echo '<br/><br/> У вас рейтинг будет: '.round($s,2).'  баллов';
			    }else
			        if($r1 != '' && $r2 != '' && $r3 != '' && $r4 !=''){           ////////// ЛЕКЦИЯ, ПРАКТИКА, ЛАБКА, СРО
                        echo '<br/> Оценки лекции:';
    			    for($i=0; $i<count($lek);$i++){
    			        echo $lek[$i],", ";
    			        }
    			        echo '<br/> Оценки практики:';
    			    for($i=0; $i<count($prak);$i++){
    			        echo $prak[$i],", ";
    			        }
    			        echo '<br/> Оценки лабки:';
    			    for($i=0; $i<count($lab);$i++){
    			        echo $lab[$i],", ";
    			        }
    			        echo '<br/> Оценки СРО:';
    			    for($i=0; $i<count($sro);$i++){
    			        echo $sro[$i],", ";
    			        }
    			        echo '<br/><br/> Оценка РК: '.$rk1.'';
    			        $s1 = ($raiting1+$rk1)/2;
    			        echo '<br/><br/> У вас рейтинг будет: '. round($s1, 2) .' баллов ';
			    }else   //////// ЛЕКЦИЯ, ЛАБКА, СРО
    			    if($r1 != '' && $r3 != '' && $r4 !='' && $r2 == ''){
        			            echo '<br/> Оценки лекции:';
        			    for($i=0; $i<count($lek);$i++){
        			            echo $lek[$i],", ";
        			        }
        			            echo '<br/> Оценки лабки:';
        			    for($i=0; $i<count($lab);$i++){
        			            echo $lab[$i],", ";
        			        }
        			            echo '<br/> Оценки СРО:';
        			    for($i=0; $i<count($sro);$i++){
        			            echo $sro[$i],", ";
        			        }
        			            echo '<br/><br/> Оценка РК: '.$rk1.'';
            			        $s2 = ($raiting2+$rk1)/2;
            			        echo '<br/><br/> У вас рейтинг будет: '.round($s2, 2).' баллов ';
			    }else   /////// ПРАКТИКА, СРО
    			    if($r2 != '' && $r3 != '' && $r1 == '' && $r4 == ''){
        			            echo '<br/> Оценки практики:';
        			    for($i=0; $i<count($prak);$i++){
        			            echo $prak[$i],", ";
        			        }
        			            echo '<br/> Оценки СРО:';
        			    for($i=0; $i<count($sro);$i++){
        			            echo $sro[$i],", ";
        			        }
            			        echo '<br/><br/> Оценка РК: '.$rk1.'';
            			        $s3 = ($raiting3+$rk1)/2;
            			        echo '<br/><br/> У вас рейтинг будет: '.round($s3, 2).' баллов ';
        			    }else       ////// ЛЕКЦИЯ, СРО
            			    if($r4 != '' && $r3 != '' && $r1 == '' && $r2 == ''){
            			            echo '<br/> Оценки лекции:';
            			    for($i=1; $i<count($lek);$i++){
            			            echo $lek[$i],",";
            			        }
            			            echo '<br/> Оценки СРО:';
            			    for($i=0; $i<count($sro);$i++){
            			            echo $sro[$i],", ";
            			        }
                			        echo '<br/><br/> Оценка РК: '.$rk1.'';
                			        $s4 = ($raiting4+$rk1)/2;
                			        echo '<br/><br/> У вас рейтинг будет: '.round($s4, 2).' баллов ';
			    }
			    
			    
			    
			    
			    echo '</div>';
			    echo '<div class="panel-footer"><a href="/formula/raiting.php">Назад</a></div><br/>';
                    }
                    
                    }else{
                        echo '<div class="alert alert-danger" >';
                      echo 'Поле имеет недопустимую оценку</div>';
                      echo '<div class="panel-footer"><a href="/formula/raiting.php">Назад</a></div></div><br/>';
                      }
                    
                    
		break;
		default:
		echo '<form action = "?act=enu" 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>Введите оценку РК <b></b></p>
            <input type = "text" name = "rk1" value = "" /> <br/><br/>
            <button class="btn btn-info" name = "send"/>Считать</button><br/><br/>
        </form>';
		break;
	}
.

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

100 1 1 1
10 10 1 1
1 100 1 1

И т.п.. То есть, юзер обязан прописать четыре группы чисел через пробел, при этом каждое число должно иметь длину не менее одной, и не более трёх цифр.

пример (+/-)
<?php

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

    $input = array_filter($_POST, function ($i) {
        return preg_match('~\d{1,3}\s\d{1,3}\s\d{1,3}\s\d{1,3}~', $i);
    });

    $err = array_diff_key($errors, $input);

    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>Введите оценку РК <b></b></p>
    <input type = "text" name = "rk1" value = "" /> <br/><br/>
    <button class="btn btn-info" name = "send"/>Считать</button><br/><br/>
    </form>';
Всего: 16