循环逻辑捕获未知限制值

时间:2014-12-08 08:53:22

标签: php

我不能再写条件了,但我不能使用while循环,因为我不知道$ _GET [" pageNumber"]的max int。我必须写下面的丑陋代码

switch ($_GET["pageNumber"]) {
    case 3:
         $_GET["pageNumber"] = 40;
        break;
    case 4:
        $_GET["pageNumber"] = 60;
        break;
    case 5:
        $_GET["pageNumber"] = 80;
        break;
    case 6:
        $_GET["pageNumber"] = 100;
    break;
    default:
        $_GET["pageNumber"] = 20;
}

处理此案件的更好方法是什么?

2 个答案:

答案 0 :(得分:1)

检查是否设置了pageNumber,如果是,请检查它是否仅包含数字。如果是这样,只需将其值乘以20,然后减去20即可得到正确的偏移量:

if (isset($_GET['pageNumber']) && ctype_digit($_GET['pageNumber']) && $_GET['pageNumber'] > 2) {
  $_GET['pageNumber'] = $_GET['pageNumber'] * 20 - 20; 
} else {
  $_GET['pageNumber'] = 20;
}

答案 1 :(得分:0)

您可以使用switch作为更好的选择,而不是array indexes语句。

每次,你需要添加一个新条件,你需要附加一个带

的数组元素

预定义的键和值。

<?php
$pageNumbers = array();
$pageNumbers[3] = 40;
$pageNumbers[4] = 60;
$pageNumbers[5] = 80;
$pageNumbers[6] = 100;
$pageNumber = ! empty($pageNumbers[$_GET['pageNumber']) ? $pageNumbers[$_GET['pageNumber'] : 20;
?>