如何在PHP中表示非常大的数字?

时间:2015-09-04 05:34:22

标签: php

您好我正在尝试分页数据而不创建这么多功能。我决定合并函数(一个加载一些问题,一个加载所有问题),从我的数据库中获取所有数据。

我有这个函数调用我的分页:

$this->get_questions_incrementally(null, $id, $page_no, $items_per_page);

我通常在一次收到所有问题时这样做:

$this->get_questions_incrementally(null, $id, $page_no=0, $items_per_page=999999);

如何将$items_per_page表示为无穷大?

我是一个非常糟糕的主意,实际上是否有比这更好的解决方案?

2 个答案:

答案 0 :(得分:1)

我的建议是获得哨兵价值。你真的不想获取无限数量的行。你想要所有的行。

如果您可以控制您正在调用的方法,那么合理的做法是接受$items_per_page = -1作为标记值,​​表明您想要所有结果。

或者,如果您无法控制该代码,那么正如@zerkms建议的那样,我会使用PHP_INT_MAX。

这可以像这样实施

function get_questions_incrementally($a, $id, $page_number, $items_per_page) {
    if ($items_per_page == -1) { 
        $LIMIT = "";
    } else { 
       $LIMIT = " LIMIT $items_per_page"; 
    }
    //blah blah query building
    //at this point $query is ready for attachment of a LIMIT clause
    $query = $query . $LIMIT;
    //run query
}

答案 1 :(得分:1)

当我有多个参数(其中一些可能是可选的)时,我首选的方法是使用setter函数创建一个对象。这样你就可以做到:

$objectname->setId($id);    
$objectname->setAll(true);

在您的对象中,您还可以实现$current_question$current_page$questions_per_page等变量,并拥有一个名为get_next_question_set()的函数。

但是,如果您更喜欢使用函数式编程,并且因为PHP是松散类型的,您也可以这样做:

$this->get_questions_incrementally(null, $id, $page_no=0, $items_per_page="ALL");

然后检查一下这个值是否等于" ALL"或整数。