gpt4 book ai didi

php - 如何只选择数组中的前几项?

转载 作者:可可西里 更新时间:2023-11-01 12:49:25 25 4
gpt4 key购买 nike

这里有人为我回答一些简单的事情。我试过搜索,但我不知道我到底在找什么。

我有一个 JSON 字符串数组,用 PHP 表示,电影的 Actor 和剧组成员。

这里我只抽出职位名称为“ Actor ”的人

  foreach ($movies[0]->cast as $cast) {
if ($cast->job == 'Actor') {
echo '<p><a href="people.php?id=' . $cast->id . '">' . $cast->name . ' - ' . $cast->character . '</a></p>';
}
}

问题是,我希望能够限制从职位名称为“ Actor ”的人员中抽出的人数。比如说,前 3 个。

那么我如何从这个数组中只挑选前 3 个人呢?

最佳答案

好的 - 这对于这个问题来说有点矫枉过正,但也许它有一些教育目的。 PHP 带有一组迭代器,可用于对给定的一组项目进行抽象迭代。

class ActorIterator extends FilterIterator {
public function accept() {
return $this->current()->job == 'Actor';
}
}

$maxCount = 3;
$actors = new LimitIterator(
new ActorIterator(
new ArrayIterator($movies[0]->cast)
),
0,
$maxCount
);
foreach ($actors as $actor) {
echo /*... */;
}

通过扩展抽象类FilterIterator我们能够定义一个过滤器,它只返回给定列表中的 Actor 。 LimitIterator允许您将迭代限制为给定的集合和 ArrayIterator是使 native 数组与 Iterator 兼容的简单助手界面。迭代器允许开发人员构建定义迭代过程的链,这使得它们非常灵活和强大。

正如我在介绍中所说:没有迭代器的东西可以很容易地解决给定的问题,但它为开发人员提供了一些扩展选项并支持代码重用。例如,您可以将 ActorIterator 增强为某些 CastIterator,它允许您传递转换类型以在构造函数中进行过滤。

关于php - 如何只选择数组中的前几项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5852296/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com