获取php对象的最后500个值?

时间:2018-10-30 10:18:19

标签: php arrays json laravel object

我知道PHP end()函数存在,但我不仅想要对象的最后一个值,还想要最后500个值。

我有一个可能包含数千个数据的对象,并且我想用这些数据在前端显示一个图形。但是,只有最后500个值超过此值,才可能大大降低响应时间。

我当时正在考虑反转数据对象的值,取前500个值,然后再次反转。这听起来像是浪费了太多的处理。

我还尝试过先将对象转换为数组,然后使用array_slice($array, -500);并将其转换回PHP对象,然后在foreach中使用它。当我这样做时,我得到了错误:

  

为foreach()提供的参数无效

这是代码:

$dataArray = array_slice((array) $data, -5);
$data = json_encode($dataArray);

您有任何想法我在这里做错了什么,或者如何做得更聪明?

2 个答案:

答案 0 :(得分:3)

如果您的$data对象是项目的集合,则可以使用以下内容:

$data->reverse()->take(500)->get();

或将数组转换为集合

collect($data)->reverse()->take(500)->get();

答案 1 :(得分:0)

    $count = 1000;
    $arrValue = [];

    $arrValueMD = [];

    for ($i=0; $i < $count; $i++) {

        array_push($arrValue, $i);

    }

    foreach ($arrValue as $k => &$v) {

        array_push($arrValueMD, $k, $v);
     //  echo "Current value of \$a:$k $v.\n";
    }
     //   print_r($arrValueMD);

    $n = 500;
    $arr = array_slice($arrValueMD, -$n);
    print_r($arr);