1

私はこのような機能を持っています

public function get_page($position) {

    switch ($position) {
        case "current":
            echo "current";
            return $this->current_page;
            break;
        case "first":
            echo "first";
            return $this->current_page >= 3 ? 1 : false;
            break;
        case "last":
            echo "last";
            return $this->current_page <= $this->total_pages() - 2 ? ceil($this->count / $this->nb_items_to_show) : false;
            break;
        case "previous":
            echo "previous";
            return $this->current_page - 1 >= 1 ? $this->current_page - 1 : false;
            break;
        case "next":
            echo "next";
            return $this->current_page + 1 <= $this->total_pages() ? $this->current_page + 1 : false;
            break;
        case is_int($position):
            echo "int";
            if ($position >= 1 && $position <= $this->total_pages()) {
                return $position;
            } else {
                return false;
            }
            break;
        default:
            echo "default";
            return false;
            break;
    }
}

関数を呼び出すと、0 を除くすべてのパラメーターに対して機能し、スイッチでは「現在」のケースになります。

$paginator->get_page(0);

引用符「0」で関数を呼び出すと、機能します。しかし、関数はこのように呼び出すことができます

$paginator->get_page($paginator->get_page("current") - 2);

パラメータ 0 で関数を呼び出すにはどうすればよいですか?

4

3 に答える 3

1

is_int返品TRUEまたはFALSE

case is_int($position):case -1:これはand と同じですが、そうではありcase 1:ませんcase 0:

PHP では、ゼロ以外の値TRUEと見なされます

あなたはおそらく探しているcase intval($position):

また、astring0と比較するとTRUE、文字列が23balloons. これがPHPの仕組みです。

したがって、次の理由により、すべての整数条件を文字列条件に進める必要があります。

文字列が数値コンテキストで評価されると、結果の値と型は次のように決定されます。

文字列に '.'、'e'、'E' のいずれの文字も含まれず、数値が整数型の制限 (PHP_INT_MAX で定義) に収まる場合、文字列は整数として評価されます。それ以外の場合はすべて、float として評価されます。

値は文字列の最初の部分によって与えられます。文字列が有効な数値データで始まる場合、これが使用される値になります。それ以外の場合、値は 0 (ゼロ) になります。有効な数値データは、オプションの符号であり、その後に 1 つ以上の数字 (オプションで小数点を含む) が続き、その後にオプションの指数が続きます。指数は、'e' または 'E' の後に 1 つ以上の数字が続きます。

詳細については、こちらをご覧ください

于 2012-12-15T11:05:32.560 に答える
-1

変化する:

is_int // Find whether the type of a variable is integer

に:

is_numeric // Finds whether a variable is a number or a numeric string
于 2012-12-15T11:15:46.927 に答える
-2

スイッチの前に追加:

if (!is_string($position)) {
goto default;
}
于 2012-12-15T11:09:56.110 に答える