【问题标题】:Non well formed numeric value formed when using array_splice使用 array_splice 时形成的非格式良好的数值
【发布时间】:2013-02-05 19:00:49
【问题描述】:

我在 PHP 中使用 array_slice,如下所示:

if (isset($_GET['page']) && !isset($no_pagination)) {
        $page_num = mysql_real_escape_string($_GET['page']);
        $limit_value_from = $page_num * 10;
        $limit_value_to = $limit_value_from + 10;
        $limit_query = $limit_value_from.", ".$limit_value_to;
    }

if (!isset($no_pagination) && isset($limit_query)) {
        $usernames_new = array_splice($usernames, $limit_query);
        $usernames = $usernames_new;
    }

当我运行脚本时,它给了我这个错误:遇到格式不正确的数值。当我回显 $limit_query 字符串时,它会给我正确的 0、10 10、20 20、30 值,如果我在函数中手动输入 0、10 10、20 等,它可以正常工作。为什么即使格式正确,也会发生此错误?

注意:当我在数组拼接线之前放置@符号时,代码可以正常工作...只是想知道为什么会发生此错误。

【问题讨论】:

    标签: php arrays pagination array-splice


    【解决方案1】:

    您似乎为该方法传递了错误的参数。第二个参数是一个 INT。

    array array_slice ( array $array , int $offset [, int $length = NULL [, bool $preserve_keys = false ]] )
    

    试试这个:

    $usernames_new = array_splice($usernames, $limit_value_from, $limit_value_to);
    

    【讨论】:

    • 效果很好!谢谢!在我看来,我的代码仍然应该可以工作......但无论如何,您的更改使它可以正常工作,所以这总是最好的:)
    • 将第二个参数转换为整数非常重要。例如(int)$second_parameter
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-01
    • 1970-01-01
    • 2019-08-08
    • 1970-01-01
    • 2011-02-03
    • 2011-02-04
    相关资源
    最近更新 更多