Получить последние 500 значений объекта php? - PullRequest
0 голосов
/ 30 октября 2018

Я знаю, что функция PHP end () существует, но я не просто хочу последнее значение объекта, я хочу последние 500 значений.

У меня есть объект с возможно тысячами данных, и я хочу показать график на моем веб-интерфейсе с этими данными. Но только последние 500 значений могут привести к значительному замедлению времени отклика.

Я думал о том, чтобы, возможно, изменить значения объекта данных, взять первые 500 значений и затем снова повернуть их обратно. Это звучит как слишком много впустую обработки.

Я также попытался сначала преобразовать объект в массив, а затем использовать array_slice($array, -500); и преобразовать его обратно в объект PHP и использовать его в foreach. Когда я делаю это, я получаю ошибку:

В foreach указан неверный аргумент ()

Это код:

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

У вас есть идеи, что я делаю здесь неправильно или как сделать это умнее?

Ответы [ 2 ]

0 голосов
/ 30 октября 2018
    $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);
0 голосов
/ 30 октября 2018

, если ваш $data объект представляет собой набор элементов, вы можете использовать следующее:

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

или превратить ваш массив в коллекцию

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