我知道PHP end()函数存在,但我不仅想要对象的最后一个值,还想要最后500个值。
我有一个可能包含数千个数据的对象,并且我想用这些数据在前端显示一个图形。但是,只有最后500个值超过此值,才可能大大降低响应时间。
我当时正在考虑反转数据对象的值,取前500个值,然后再次反转。这听起来像是浪费了太多的处理。
我还尝试过先将对象转换为数组,然后使用array_slice($array, -500);
并将其转换回PHP对象,然后在foreach
中使用它。当我这样做时,我得到了错误:
为foreach()提供的参数无效
这是代码:
$dataArray = array_slice((array) $data, -5);
$data = json_encode($dataArray);
您有任何想法我在这里做错了什么,或者如何做得更聪明?
答案 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);