PHP:IPv4 の型 調べ。関数、配列、ループ、count系

/*
IPv4 の正常パターン
1. 「.」が3つ ***DONE!!!
2. 各「.」と「.」の間の数字は、1桁〜3桁
3. 数字の最大数は、「255」
4. 1文字ずつ分割したときに、最大の文字数は、「15文字」
*/
    $n = trim(fgets(STDIN));
    $arr = [];
    $arrAns = []; // ture, or false を格納する配列
    for($i = 0; $i < $n; $i++) {
        $arrOneRow[] = trim(fgets(STDIN));
        $arr[] = str_split($arrOneRow[$i]);
    }
    
    // 2. , 3. の条件
    function checkDotFormat($array)
    {
        $parts = explode(".", $array); // dot 区切りで配列化
        //  $i < 4 の理由:IPv4 は、数字は、4セットだから。かつ、
        // 既にif文で, dot は3つに制限されているから,$parts の index番号も 0~3 に制限されている。
        for($i = 0; $i < 4; $i++) {
            $partsStr = strval($parts[$i]); // 文字化
            // 1桁以上3桁以下、かつ、各数字は、255 以下
            if (strlen($partsStr) >= 1 && strlen($partsStr) <=3 && $parts[$i] <= 255)
            {
                return true;
            } else {
                return false;
            }
        }
    }

    $i = 0;
    while($i < $n) {
        // 1., 4. の条件
        if  ( 
             count($arr[$i]) <= 15 && // IPv4 は、最大15文字
             substr_count($arrOneRow[$i], '.') === 3 && // dot は、3文字
             checkDotFormat($arrOneRow[$i]))
        { 
            foreach ($arr[$i] as $k => $v) { // $k は、値のキーを指す(index番号)。
                  if ($k === 0 && $v === '.') { // 先頭が、dot ならfalse
                      $arrAns[] = "False";
                      break;
                  } 
            }
            $arrAns[] = "True";
        } else {
            $arrAns[] = "False";
        }
        $i++;
    }
    
    foreach ($arrAns as $v) {
        echo $v . PHP_EOL;
    }