我在某个数组中有值我想重新索引整个数组,这样第一个值键应该是 1 而不是零,即
默认情况下,在 PHP 中,数组键从 0 开始。即 0 => a, 1=> b
,我想重新索引整个数组以从 key = 1 开始,即 1=> a, 2=> b, ....
原文由 Khurram Ijaz 发布,翻译遵循 CC BY-SA 4.0 许可协议
我在某个数组中有值我想重新索引整个数组,这样第一个值键应该是 1 而不是零,即
默认情况下,在 PHP 中,数组键从 0 开始。即 0 => a, 1=> b
,我想重新索引整个数组以从 key = 1 开始,即 1=> a, 2=> b, ....
原文由 Khurram Ijaz 发布,翻译遵循 CC BY-SA 4.0 许可协议
如果您已经有一个数组并且想要重新索引它以从索引 X 而不是 0、1、3…N 开始,那么:
// Check if an array is filled by doing this check.
if (count($your_array) > 0) {
// Let's say we want to start from index - 5.
$your_array = [5 => $your_array[0], ...array_slice($your_array, 1)];
}
关于传播运算符“…”
https://www.php.net/manual/en/migration56.new-features.php#migration56.new-features.splat
附言
真实世界的场景/用例,我在为客户执行任务时遇到的情况:
我有一个 <div>
包含两个 <tables>
。每个 <table>
包含一周中的几天的标记。第一个有从星期一到星期四的日子。第二个有从周五到周日的日子。因此,在我的任务中,我让变量代表一周,其中每天都有几个小时的开放和关闭。我需要将那一周的变量适当地分成两部分。
<table>
<?php for ($dayIndex = 0; $dayIndex < 4; $dayIndex++): ?>
<?php
$_timetable = array_slice($timetable, 0, 4);
// $renderTimetableRow is an anonymous function
// that contains a markup to be rendered, like
// a html-component.
$renderTimetableRow($_timetable, $dayIndex);
?>
<?php endfor; ?>
</table>
<table>
<?php for($dayIndex = 4; $dayIndex < 7; $dayIndex++): ?>
<?php
if (count($_timetable = array_slice($timetable, 4, 7)) > 0) {
$_timetable = [4 => $_timetable[0], ...array_slice($_timetable, 1)];
}
// $renderTimetableRow is an anonymous function
// that contains a markup to be rendered, like
// a html-component.
$renderTimetableRow($_timetable, $dayIndex);
?>
<?php endfor; ?>
</table>
原文由 Gromax 发布,翻译遵循 CC BY-SA 4.0 许可协议
2 回答1.5k 阅读✓ 已解决
1 回答1.3k 阅读✓ 已解决
2 回答954 阅读✓ 已解决
1 回答1.1k 阅读✓ 已解决
2 回答1k 阅读
1 回答977 阅读
1 回答902 阅读
编辑:我决定将此解决方案与本主题中提出的其他解决方案进行基准测试。这是我使用的非常简单的代码:
和输出: