PHP根据对象的数组位置和限制获取对象

时间:2019-05-23 09:29:58

标签: php arrays loops object

我有一个对象数组(由TYPO3生成),它来自变量$times,看起来像这样:

 TYPO3\CMS\Extbase\Persistence\Generic\QueryResultprototypeobject (8 items)
   0 => Vendor\MyExtension\Domain\Model\Timeprototypepersistent entity (uid=1, pid=5)
   1 => Vendor\MyExtension\Domain\Model\Timeprototypepersistent entity (uid=4, pid=5)
   2 => Vendor\MyExtension\Domain\Model\Timeprototypepersistent entity (uid=5, pid=5)
   3 => Vendor\MyExtension\Domain\Model\Timeprototypepersistent entity (uid=6, pid=5)
   4 => Vendor\MyExtension\Domain\Model\Timeprototypepersistent entity (uid=7, pid=5)
   5 => Vendor\MyExtension\Domain\Model\Timeprototypepersistent entity (uid=2, pid=5)
   6 => Vendor\MyExtension\Domain\Model\Timeprototypepersistent entity (uid=3, pid=5)
   7 => Vendor\MyExtension\Domain\Model\Timeprototypepersistent entity (uid=8, pid=5)

我想做的就是根据它们在数组中的位置来获取例如前两个对象。定义要检索多少个对象的数字是一个变量,如果客户愿意,可以更改该变量。

现在最困难的部分是,在我检索到前两个对象之后,当我按下FrontEnd中的按钮时,我想检索下两个对象。

基本上,当按下按钮时,应选择下两个对象。

到目前为止,我知道了:

$limit = $settings['list']['paginate']['itemsPerPage']; // How many objects should be retrieved
$setLastItem = 0; // sets the biggest position in the array of the selected objects
$args = $this->request->getArguments(); // Gets the arguments of the button
$getLastItem = $args['arguments']['lastItem']; // reads the last retrieved position of the last selected objects

if (!$getLastItem) {
    $getLastItem = 0;
} // evaluate if it is NULL. (By the first load of the page, there are no arguments available)

之后,我尝试了以下操作:

while ($getLastItem < count($times)) {
    $results[] = $times{$getLastItem++};
}

哪个在选定的最后一项之后给我对象。

目标:

  1. 我如何才能只给我接下来的两个对象($ limit变量)
  2. 如何获取当前所选对象的最大数组位置,以便在前端将其传递

概念:

所有这些代码都发生在名为listAction的操作上。 在页面的第一次加载时,listAction将从数组中检索前两个对象。这些对象将显示在前端。

$this->view->assignMultiple([
    'times' => $results,
    'lastItem' => $setLastItem
]);

分配的数组(时间)将呈现所选对象的信息,并且'lastItem'将作为参数放置在按钮上。

<f:form.hidden name="lastItem" value="{lastItem}"/>

按下按钮时,它将再次向listAction发送请求,并传递在FrontEnd中显示的最后一项的参数($getLastItem变量)。

现在listAction应该从$getLastItem变量的位置开始获取下两个对象,该变量是前一个选择中最后选择的对象。将要显示/选择的对象由变量$limit定义。

预先感谢

0 个答案:

没有答案