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

Posted

技术标签:

【中文标题】获取 php 对象的最后 500 个值?【英文标题】:Get the last 500 values of php object? 【发布时间】:2019-04-03 08:41:03 【问题描述】:

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

我有一个可能包含数千个数据的对象,我想用这些数据在我的前端显示一个图表。但只有最后 500 个值超过该值可能会大大减慢响应时间。

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

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

为 foreach() 提供的参数无效

这是代码:

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

你有什么想法我在这里做错了什么或者如何更聪明地做到这一点?

【问题讨论】:

你能提供一个你的$data对象的例子吗?如果它是我假设具有字符串属性的对象,那么您如何定义“最后”500 个值? @ShaunBebbers 一个包含单个项目的数组切片? 倒车并不是一项昂贵的操作。我会去那个解决方案 @ShaunBebbers Nakov 的回答正是我想要的反向方法。您还希望我添加您要求的信息吗? @ShaunBebbers 是的,你是对的,下次我提出其他问题时,我会尝试提供更多信息;)谢谢 【参考方案1】:

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

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

或将您的数组转换为集合

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

【讨论】:

如果我使用第一行,我会得到“缺少获取操作的参数”,但一旦我删除它,它就可以正常工作了!【参考方案2】:
    $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);

【讨论】:

以上是关于获取 php 对象的最后 500 个值?的主要内容,如果未能解决你的问题,请参考以下文章

PHP函数获取数组的前5个值

当我尝试从 PHP 对象/数组返回值时,出现 500 错误。但是可以返回所有对象

Python获取列表中的最后一个或者倒数第几个的方案

如何根据分隔符“|”之前的匹配值获取字符串中的第二个值?

在 Qt 中从用户那里获取几个值?

请问PHP如何解析这样的json值?如何获取其中某个值内容呢? 代码如下: