当前位置: 首页 > 知识库问答 >
问题:

如何将数组重复一定次数

堵恺
2023-03-14

我有一个等于10的天数,我有一个周天数数组“周一”、“周二”、“周三”、“周四”、“周五”。现在我想重复这个数组10次。例如,如果天=9,则数组将打印“周一”、“周二”、“周三”、“周四”、“周五”、“周一”、“周二”、“周三”、“周四”

这是我已经尝试过的代码

$days = 9;
$arr = array("Monday", "Tuesday", "Wednesday", "Thursday", "Firday");
foreach (range(1, $days) as $i) {
 foreach ($arr as $value) {
   echo $value . ', ';
 }

}

我拿回来的结果是

Monday, Tuesday, Wednesday, Thursday, Firday, 
Monday, Tuesday, Wednesday, Thursday, Firday, 
Monday, Tuesday, Wednesday, Thursday, Firday, 
Monday, Tuesday, Wednesday, Thursday, Firday, 
Monday, Tuesday, Wednesday, Thursday, Firday, 
Monday, Tuesday, Wednesday, Thursday, Firday, 
Monday, Tuesday, Wednesday, Thursday, Firday, 
Monday, Tuesday, Wednesday, Thursday, Firday, 
Monday, Tuesday, Wednesday, Thursday, Firday, 

但我期待的结果是

Monday, Tuesday, Wednesday, 
Thursday, Firday, Monday, Tuesday, Wednesday, Thursday

共有2个答案

华良才
2023-03-14

您可以只使用for循环和模运算符%来确保您的索引不超过数组的范围:

$days = 9;
$arr = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday'];
for ($i = 0; $i < $days; $i++) {
    echo $arr[$i % 5] . ',';
}

输出:

Monday,Tuesday,Wednesday,Thursday,Friday,Monday,Tuesday,Wednesday,Thursday,

如果不需要结尾的逗号,只需在输出之前为循环的结尾添加一个测试

for ($i = 0; $i < $days; $i++) {
    echo $arr[$i % 5] . ($i == $days - 1 ? '' : ',');
}

输出:

Monday,Tuesday,Wednesday,Thursday,Friday,Monday,Tuesday,Wednesday,Thursday

3v4l.org演示

章茂
2023-03-14

您正在迭代一个数组$天次。您应该遍历数组$天索引

$days = 13;
$arr = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday'];
foreach (range(0, $days - 1) as $i) {
    echo $arr[$i % 5] . ',';
};
 类似资料:
  • 正如这里看到的,有两种方法可以重复某事很多次。但是它似乎对我不起作用,所以我想知道是否有人能帮忙。 基本上,我想重复以下3次 根据链接所说,这就是我所做的, 但这似乎行不通。while循环只重复一次,而不是三次。有人能帮我解决这个问题吗?

  • 对朱莉娅来说是新来的,所以这可能很容易。 我有一个n×m的数组和一个长度为n的向量,我想在向量的对应元素中重复数组的每一行的次数。例如: 结果应该是6乘6的数组。我尝试了功能,但是 生成一个数组,因此需要作为重复元素的维度。在matlab中,我会使用,我希望julia提供类似的东西。我的实际矩阵要大得多,我需要多次调用该函数,所以这个操作需要尽可能快。

  • 我想迭代我现有数组的每个值。每个值应该以两种方式(列/行)复制一定次数。可以说,我想增加分辨率。 理解我的描述的简单示例: 结果应该是: 除了这个例子,我还必须处理一个更大的数组,所以手动操作是不可行的。

  • 问题内容: 有没有一种方法可以定义次数,而不必总是遍历数组? 例如,在下面,我希望列表项显示5次,并假设等于5,并且增加数字,因此每个列表项都按1、2、3、4、5递增 所需结果: 问题答案: 较新版本的AngularJS(> = 1.3.0)允许您仅使用变量(无需功能)来执行此操作: 在首次提出问题时这是不可能的。感谢@Nikhil Nambiar从下面的回答中获得此更新 原创(5/29/2013

  • 我被问到一个面试问题,要求我返回数组中重复次数最多的数字,例如,{1,1,2,3,4}返回1。 我首先在hashtable中提出了一种方法,它要求空间复杂度O(n)。然后我说先对数组排序,然后遍历它,然后我们就可以找到数字了。 有什么优化吗? 谢了。